ByxContainer轻量级 IOC 容器

联合创作 · 2023-09-30 06:54

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

浏览 27
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报