ByxContainer 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
ByxContainer 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
ByxContainer 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 MIT
开发语言 Java 查看源码 »
操作系统 跨平台
软件类型 开源软件
开源组织
地区 国产
投 递 者 baiyuxuan
适用人群 未知
收录时间 2021-02-22

软件简介

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

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击引领话题📣 发布并加入讨论🔥
暂无内容
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
fastjson < 1.2.83 任意代码执行漏洞
反序列化
Fastjson 是Java语言实现的快速JSON解析和生成器。 fastjson 使用黑白名单用于防御反序列化漏洞,1.2.80及以下版本在特定条件下可绕过默认autoType关闭限制,攻击远程服务器。 攻击者可利用该漏洞远程执行恶意代码。
CVE-2022-25845 MPS-2022-11320
2022-08-08 20:52
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
0 评论
1 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部