读书人

自各儿编写ioc

发布时间: 2012-10-25 10:58:57 作者: rapoo

自己编写ioc

                    1. public?static?void?main(String[]?args)?{ ??
                    2. ???????MyBeanFactory?f?=?MyBeanFactory.getInstance(); ??
                    3. ???????try?{ ??
                    4. ???????????IMybeanOne?o?=(IMybeanOne)?f.getRegistedBean("first"); ??
                    5. ???????????o.printString(); ??
                    6. ???????}?catch?(Exception?e)?{ ??
                    7. ???????????System.out.print("error?"+e.getMessage()); ??
                    8. ???????} ??
                    9. ???}??

                    呵呵最后是结构输出:

                    start
                    ?don some thing
                    end

                    这里我还是使用了xml来配置bean的信息。第一这种方式是我比较熟悉的 第二 我感觉这种方式还是比较灵活的。

                    然后,我把一些类似于横切面的业务放到了anntation中来处理,这个其实是我在开发中很希望能做到的。

                    比如事务,我就在方法上标上这个方法就是要执行事务就完了,或者要缓存。这样开发起来感觉简单快捷。(个人想法)

                    我通过配置信息把实现bean的class存放在一个map中在client调用的时候,判断是否通过代理实现在然后给出实例。

                    这些就是我的一个基本想法。(算是实现了)

                    这只是在学习,希望高人能给指点一二,然后我试着把这些想法完善。

                    ?

                    1 楼 leyen 2007-12-10 好轮子,呵呵!
                    我也写过一个类似的IOC,完全使用annotation,功能也支持事务,不过只支持JDBC. 2 楼 bxf12315 2007-12-11 <p>leyen 写道好轮子,呵呵! 我也写过一个类似的IOC,完全使用annotation,功能也支持事务,不过只支持JDBC.</p>
                    <p>其实,ioc应该除了做反转控制外还应该有其他作用,比如说object的生命周期管理。其它的功能目前我还不知道,呵呵。</p>
                    <p>刚刚查了查,对于生命周期的管理可以分几个:单实例,每次请求产生一个新对象,对于每个线程一个单实例,对象池,另外可能有用户自定义。其实在上面做的只是实现了一个每次请求产生一个新对象。其他的完全没有实现,第一其它好多生命周期的管理的方式,我还太明白作用 第二 如何实现也不知道。</p>
                    <p>目前,对我来说还能进一步做的可能只有对象池了。</p>
                    <p>这方面的东西知识实在太有限了,希望大家给点意见,提供一些参考。(只是学习至于能否实现就不重要了呵呵)</p> 3 楼 viqcel 2007-12-11 做学习还可以,做实际项目风险太大了。 4 楼 fight_bird 2007-12-11 5年前就使用了所谓IOC的机制,只不过没上升到IOC的理论高度,OFBiz的实体容器本身就是包含IOC的机制,那比IOC的理论早出好几年。

                    鼓励造出超级“轮子”,如Spring,鄙视“锤子”,如EJB2。 5 楼 bxf12315 2007-12-13 <p>现在又有新问题了,如果使用了对象池。那么我怎么做对象的回收呢?</p>
                    <p>从client是不会做释放对象的动作的,这个该怎么做呢?</p>
                    <p>以前用对象池,一般都是要先借后还的,但是现在这种方式怎么还呢? 这样是不是就需要起一个后台线程通过lru什么的来进行回收? 这下不明白的就更多了。</p>
                    <p>能给例子来学习一下吗? 比如说数据库连接池的对象回收。(看过几次pico,但是没看懂他的实现机制)</p> 6 楼 rEloaD_cn 2008-01-11 <div class='quote_title'>bxf12315 写道</div><div class='quote_div'><p>现在又有新问题了,如果使用了对象池。那么我怎么做对象的回收呢?</p>
                    <p>从client是不会做释放对象的动作的,这个该怎么做呢?</p>
                    <p>以前用对象池,一般都是要先借后还的,但是现在这种方式怎么还呢? 这样是不是就需要起一个后台线程通过lru什么的来进行回收? 这下不明白的就更多了。</p>
                    <p>能给例子来学习一下吗? 比如说数据库连接池的对象回收。(看过几次pico,但是没看懂他的实现机制)</p></div><br/>数据库连接池的对象回收好像是在close的时候将connection回收的吧,显示通知管理器该connection已经不再使用。

                    但一般的javabean这样才算不再使用了呢?难不成还要咱们还要去内存看它是不是死节点?不明白 7 楼 bxf12315 2008-01-21 <div class='quote_title'>rEloaD_cn 写道</div><div class='quote_div'><div class='quote_title'>bxf12315 写道</div><div class='quote_div'><p>现在又有新问题了,如果使用了对象池。那么我怎么做对象的回收呢?</p><p>从client是不会做释放对象的动作的,这个该怎么做呢?</p><p>以前用对象池,一般都是要先借后还的,但是现在这种方式怎么还呢? 这样是不是就需要起一个后台线程通过lru什么的来进行回收? 这下不明白的就更多了。</p><p>能给例子来学习一下吗? 比如说数据库连接池的对象回收。(看过几次pico,但是没看懂他的实现机制)</p></div><br/>数据库连接池的对象回收好像是在close的时候将connection回收的吧,显示通知管理器该connection已经不再使用。 但一般的javabean这样才算不再使用了呢?难不成还要咱们还要去内存看它是不是死节点?不明白</div><p><br/>首先.一般的连接池中使用连接都是一中逻辑上的 创建和释放,并非实际的。</p><p>第二,在使用一些连接池的时候,开发者可以不去关心close。</p><p>这些工作会交给系统来做处理,-(我想可能是通过一些,机制或者原则-ex 时间 最近最多使用什么的 就像大家在使用一些缓存工具一样)。</p><p>也就是说,我们把对象的创建和释放工作交给容器来完成。 容器的一个特点不就是,可以是开发人员不关注对象的创建吗?</p><p>?</p><p>呵呵,这些都是个人的一点理解。</p> 8 楼 jomper 2008-01-21 建议去看看 picocontainer ---ioc bible

读书人网 >软件架构设计

热点推荐