一个模仿spring IOC功能的小练习---smallioc

来源:互联网 发布:js 数组 contains方法 编辑:程序博客网 时间:2024/06/06 02:48

微小型的IOC容器

起因

起因是由于我在编写工作中需要的GUI小工具时候遇到了很多对象之间引用的麻烦,突然感觉到习惯了spring 带来的IOC的便利后很难回到原始的状态。
我试图把spring中的IOC功能拆分开来,最后得到了将近3M的各种jar包,而我写的代码才100k。spring实在是太强大了,但他也越来越臃肿,而我只想要简单的IOC功能。
最终我决定为自己写一个微型的纯粹的IOC框架,顺便学习下Spring。

设计

因为离开了AOP后其实Ioc的一些功能也会受到影响。所以这个工程只有很弱的基础IOC功能
我想让工程往极简方向发展,所以取消了XML 和properties配置文件。
支持的最简单的配置放在了初始化容器之前的静态方法里,包括日志记录
所有代码加起来的大小只有50k,适用于自己练习小的project项目 或制作小工具等
工程只是简单完成 并使用在了我自己的一个小工具上,未经过任何完整的测试
代码里只有 cn路径下是源码,其他都是无效的测试类
这里写图片描述

使用

核心包 cn.lsg.smallioc.core 内的ApplicationContext是 唯一入口

public class Test{public static void main(String[] args) {  //设置默认日志记录器配置  ApplicationContext.setDefaultLoggerParams(true, false, LEVEL.debug, "C:/Users/Administrator/Desktop");ApplicationContext.replaceLogger(log);//更换掉默认的日志记录器  //获取容器对象 首次获取容器对象必须传入一个或多个扫描的包路径,  ApplicationContext app = ApplicationContext.getContext("com");  //或者  ApplicationContext app = ApplicationContext.getContext("com","cn.lsg","org.lsg");  //当容器初始化完成后 则可以传空参获取容器对象  ApplicationContext app = ApplicationContext.getContext();  //获取非注入的获取实例对象可以通过ApplicationContext内的方法   A a1=app.getbean(A.class);//根据类型   A a2=(A) app.getbean("aaa");//根据id 要强制转换   A a3=app.getbean("aaa",A.class);//根据id   }}

将类纳入容器管理目前只支持注解 这里的注解只有两个:
inject(id) id不输则默认按类型注入,可以是根据接口类型注入但要保证接口下只有唯一的受管类,否则必须使用id
member(id,single) id默认首字母小写的类名,默认单例

@Member(id="jijij")public class A implements O{    @Inject    public B b;}
 @Member(single=false)public class B implements O {    @Inject(id="jijij")    public A a;    @Inject    public C c;  }

github源码

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 红木家具去哪里买 家具城家具 居然家具 网上买沙发靠谱吗 网上买床靠谱吗 家具城买家具 买家具去哪里买好 买家具一般能砍价几成 买老榆木家具后悔 网上家具 金丝柚木家具优缺点 柚木家具的价格 柚木实木家具 黄金胡桃木家具的优缺点 南榆木家具的优缺点 柚木家具的优缺点 京东家具城 网上买家具靠谱吗 家具选购 掌上明珠 家具 赖氏家具 成都八益家具城 天坛家具 买家具什么牌子好 买家具上什么网站好 买家具去哪里 去哪买家具便宜 买家具买什么品牌 买家具注意什么 哪个网买家具便宜 买家具的好网站 买家具那里便宜 怎样买家具便宜 买二手家具上什么网 家具买什么品牌好 买家具什么牌子的好 什么时候买家具便宜 什么时候买家具划算 什么地方买家具便宜 实木家具哪里买 网上买家具的网站