ByxContainer

轻量级 IOC 容器
授权协议 MIT
开发语言 Java
所属分类 程序开发、 面向方面AOP/IoC
软件类型 开源软件
地区 国产
投 递 者 洪弘壮
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

ByxContainer是一个轻量级IOC容器,具有以下特性:

  • 使用Json格式的配置文件,抛弃复杂冗长的xml语法
  • 支持构造函数注入、静态工厂注入、实例工厂注入、JavaBean属性注入、setter注入、条件注入
  • 支持根据id或类型获取容器中的对象
  • 支持灵活的对象创建方式的配置
  • 对象的延迟加载和单例

在项目中引入ByxContainer

  1. 添加maven仓库地址

    <repositories>
        <repository>
            <id>byx-maven-repo</id>
            <name>byx-maven-repo</name>
            <url>https://gitee.com/byx2000/maven-repo/raw/master/</url>
        </repository>
    </repositories>
  2. 添加maven依赖

    <dependencies>
        <dependency>
            <groupId>byx.container</groupId>
            <artifactId>ByxContainer</artifactId>
            <version>1.0.0</version>
        </dependency>
    </dependencies>

ByxContainer的配置文件

ByxContainer使用Json作为配置文件的格式。你可以将配置文件命名为任何名字,放在任何你喜欢的路径下。

ByxContainer配置文件的基本框架如下:

{
    "$schema": "http://byx2000.gitee.io/byxcontainer/schema/schema.json",
    "typeAlias":
    {
        
    },
    "components":
    {
        
    }
}
  • typeAlias用于配置类型别名
  • components用于声明容器中的所有组件
  • $schema键指定JSON的约束文件路径,使用约束文件可以在编辑JSON文件时启用自动完成、语法检查等功能。某些编辑器可能需要特殊设置才能支持JSON约束文件的识别

ByxContainer的所有组件都定义在components中。组件以键值对的形式写在components对象中,键就是组件的id,值就是组件的定义。

{
    "components":
    {
        "c1": ... // 组件c1的定义
        "c2": ... // 组件c2的定义
        "c3": ... // 组件c3的定义
        ...
    }
}

加载与使用ByxContainer

在应用程序的初始化代码中,按照以下方式加载配置文件,并初始化容器:

InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("配置文件路径");
ContainerFactory factory = new JsonContainerFactory(inputStream);
Container container = factory.create();

容器初始化完成后,有两种方法来获取某个已注册的对象:

  • 通过注册时的id获取
    // 获取id为c的对象
    SomeType c = container.getObject("c");
  • 通过类型获取
    // 获取容器中类型为SomeType的对象
    SomeType c = container.getObject(SomeType.class);

在以下三种情况时,会抛出ByxContainerExceprion异常:

  • 指定id的对象不存在
  • 指定类型的对象不存在
  • 有多个指定类型的对象

更多使用说明请看软件文档:https://github.com/byx2000/ByxContainer

  • ByxContainer是一个用Java编写的轻量级IOC容器,具有以下特性: 使用JSON格式的配置文件 支持构造函数注入、静态工厂注入、实例工厂注入、属性注入、setter注入、条件注入 组件的延迟加载和单例组件 根据id注册、获取容器中的组件 项目地址:https://github.com/byx2000/ByxContainer 配置文件 ByxContainer使用JSON作为配置文件的

 相关资料
  • 问题内容: 来自.NET,我习惯于Ninject,这是一个很小的简单ioc容器。Java有什么简单而轻巧的东西吗? 越简单越好! 问题答案: Pico容器或google- guice 。在这里查看比较。 顺便说一句,很少有人会致电春“ligthweight”,但它 可以 被用作这样的,只有基本功能。因此,它包含在上面的比较中。

  • 在说 Ioc 容器之前,我们需要了解什么是 Ioc 容器。 Laravel 服务容器是一个用于管理类依赖和执行依赖注入的强大工具。 在理解这句话之前,我们需要先了解一下服务容器的来龙去脉: laravel神奇的服务容器。这篇博客告诉我们,服务容器就是工厂模式的升级版,对于传统的工厂模式来说,虽然解耦了对象和外部资源之间的关系,但是工厂和外部资源之间却存在了耦和。而服务容器在为对象创建了外部资源的同

  • 7. IoC容器 本章部分小节的英文原作者似乎不太擅长写文档,经常使用特别特别长而且有多个从句的长句子,翻译起来让人痛苦:(

  • 主要内容:使用普通函数创建 goroutine,使用匿名函数创建goroutine在编写 Socket 网络程序时,需要提前准备一个线程池为每一个 Socket 的收发包分配一个线程。开发人员需要在线程数量和 CPU 数量间建立一个对应关系,以保证每个任务能及时地被分配到 CPU 上进行处理,同时避免多个任务频繁地在线程间切换执行而损失效率。 虽然,线程池为逻辑编写者提供了线程分配的抽象机制。但是,如果面对随时随地可能发生的并发和线程处理需求,线程池就不是非常直观和方便了。能否

  • Jenkins Pipeline插件有一个称为“轻量级签出”的功能,其中主服务器仅从repo中提取Jenkinsfile,而不是整个repo。配置屏幕中有一个相应的复选框。我想在多分支管道中进行轻量级签出,但我在多分支配置屏幕中没有看到复选框。有什么想法如何实现这一点吗?我注意到一些关闭的问题表明此功能可用,但我无法找到任何有关如何实现它的细节。 相关资料: https://issues.jenk