ByxContainer轻量级 IOC 容器
ByxContainer是一个轻量级IOC容器,具有以下特性:
- 使用Json格式的配置文件,抛弃复杂冗长的xml语法
- 支持构造函数注入、静态工厂注入、实例工厂注入、JavaBean属性注入、setter注入、条件注入
- 支持根据id或类型获取容器中的对象
- 支持灵活的对象创建方式的配置
- 对象的延迟加载和单例
在项目中引入ByxContainer
-
添加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>
-
添加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
评论