论坛首页 Java企业应用论坛

编程式IoC

浏览 1374 次
锁定老帖子 主题:编程式IoC
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-02-11   最后修改:2012-02-11
IOC
三年前一直在使用Spring的IoC,那时还是靠XML来配置的,现在好像可以用Annotationg来定义了,比较不错。我觉得编程式的Ioc来的更直观一些,写起代码来也更舒服,XML号称是方便更改,但改完之后不一样也得重启服务器?
近两年来一直在使用Objot IoC,可操作性更好,示例代码如下:

//业务类
public class UserService {
    @Inject
    public TopicService ts; //引用

    public void me() {
        List<Topic> l = ts.list(myId());
        System.out.println(l.size());
    }

    public int myId() {
        return 1;
    }
}

public class TopicService {
    public List<Topic> list(int id) {
         return new ArrayList<Topic>();
    }
}


//绑定类
Factory f = new Factory();
f.bind(UserService.class);
f.bind(TopicService.class); //可以不绑定,工厂会根据引用查找并绑定

//创建容器
Container c = f.create(null, true); //无父容器,lazy模式

//从容器中读取实例
UserService us = c.get(UserService.class);
us.me();

//对于并发的处理,可以创建容器的副本来使用,保证线程间安全
Container c1 = c.create();
UserService us1 = c1.get(UserService.class);
us1.me();


这样的编程对于容器的理解可能更容易一些,你们觉得呢?

关于Objot IoC和AOP深入使用,有空再写写,呵呵
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics