`
dudo
  • 浏览: 21172 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

一个比picocontainer更小的IOC容器(已更新到0.2)

    博客分类:
  • JAVA
阅读更多
又一个IOC容器,Mcc微型组件容器。

特性
===
1、IOC type2和IOC type3 依赖注入
2、组件依赖性检查
3、组件自动装配
4、运行期动态注入
5、函数返回值注入(即工厂方法注入)
6、支持简单的组件生存期管理

Mcc 0.2 (2005.01.09)
====================
Change Log
----------
1、为ComponentDescriber类添加setProperty(RuntimeParameter parameter);
2、为ComponentDescriber类添加setInitMethod方法和setDestroyMethod支持组件的生存期管理;
3、为ComponentManager类添加destroy方法,可以手动销毁ComponentManager实例;
4、为ComponentAdapter类添加destroy方法,在组件管理者销毁时销毁组件实例;
5、实现了依赖检查;
6、解决在一个组件创建过程中某个组件需要被注入多次,创建多个实例的问题。

附件中是源代码,只有在登录后才可下载
分享到:
评论
6 楼 java2014 2013-04-25  
大家看看这个Ioc容器

http://dl.vmall.com/c0u7lix55w

个人感觉这个更不错!
5 楼 dudo 2005-01-08  
引用
而且我的感觉就是运行期注入仅仅帮我自动调用了一些setter而已,我不知道还有什么其他的好处没有,所以问了这样一个问题。。。


确实是这样的,测试用例中的例子是很简单的,在一些依赖比较复杂的情况下,这样,在一定程度上简化代码。
还有,你如果在运行期手动注入依赖,那么你无法再切换这个依赖的实现,因为你已经在代码中写死了。而通过这种动态参数注入方式,你可以通过修改配置来切换这个依赖的具体实现。比如例子中的father如果运用参数的动态注入,在运行期只需要注入father的名称,即可自动将father注入child,以后通过修改配置,可以切换这个father的具体实现。
4 楼 de3light 2005-01-08  
dudo 写道
运行期注入用于这种情况: 我们要获取的组件依赖于其他的组件,而该组件的创建可能依赖于一些参数或组件,这些参数和组件需要在运行时才能确定。Mcc提供运行期注入就是解决这个问题。如果没有这个功能的支持,在这种情况下,我们必须手动创建这个依赖的组件并手动注入。


问题是,testcase里面的代码,child依赖的组件father 和 mother
        Man father = new Man();; 
        father.setName("mike");; 
        Women mother = new Women();; 
        mother.setName("marry");; 

也是我自己手动创建的啊,容器又帮不了忙的,容器也不可能帮我创建这些运行时才能确定的bean。而且我的感觉就是运行期注入仅仅帮我自动调用了一些setter而已,我不知道还有什么其他的好处没有,所以问了这样一个问题。。。
3 楼 dudo 2005-01-07  
运行期注入用于这种情况: 我们要获取的组件依赖于其他的组件,而该组件的创建可能依赖于一些参数或组件,这些参数和组件需要在运行时才能确定。Mcc提供运行期注入就是解决这个问题。如果没有这个功能的支持,在这种情况下,我们必须手动创建这个依赖的组件并手动注入。
2 楼 de3light 2005-01-07  
很简洁的容器, 稍稍看了一下源代码,跑了一下testcase ,有个地方不太明白
	public void testRuntimeParameters();{
	    ComponentDescriberManager cdm = new ComponentDescriberManager();;
	    
        ComponentDescriber cd = cdm.registerComponent("child",Child.class);;
        cd.setProperty("name",cdm.runtime(););;
        cd.setProperty("father",cdm.runtime(););;
        cd.setProperty("mother",cdm.runtime(););;
        
        ComponentManager cm = ComponentFactory.newComponentManager(cdm);;
        Man father = new Man();;
        father.setName("mike");;
        Women mother = new Women();;
        mother.setName("marry");;
        
        Child child = (Child);cm.getComponent("child",new Object[]{"john",father,mother});;
        
        assertNotNull("Component child not found!", child);;
        assertEquals(father, child.getFather(););;
        assertEquals(mother, child.getMother(););;
	}

这里实现的运行期动态注入的功能和我用
 Child child = (Child);cm.getComponent("child");
child.setFather(father);;
child.setMother(mother);;

这样做有什么不同?或者说让容器来注入比我手工注入有什么好处么?仅仅是确保需要的bean引用都有效?谢谢
1 楼 buaawhl 2005-01-07  
好。大致看了一下,感觉代码整洁漂亮。用法也很直观简单。

相关推荐

    IoC 容器和Dependency Injection 模式

    - **PicoContainer**:PicoContainer 是一个轻量级的 IoC 容器,它的设计目标是简单易用。虽然没有 Spring 那么全面,但对于小型项目或简单的依赖管理来说已经足够。 #### 六、总结 IoC 容器和依赖注入模式是现代...

    picocontainer:Java微容器

    Picocontainer是一个轻量级的依赖注入框架,它在Java世界中扮演着重要角色,特别是在简化应用程序组件的组装和管理方面。这个框架以其小巧、快速和易于理解的特点而受到开发者的青睐。在本文中,我们将深入探讨...

    PicoContainer源码学习日志

    PicoContainer是一个轻量级的依赖注入框架,主要应用于Java项目中。它的核心理念是通过组件容器来管理对象的生命周期和依赖关系,从而实现松耦合的设计。本学习日志将深入探讨PicoContainer的内部机制,解析其源码,...

    Ioc模式和微容器——j道

    PicoContainer 是一个轻量级的Java容器框架,它提供了一种简洁的方式来管理对象及其依赖关系。 **PicoContainer实现代码** ```java DefaultPicoContainer container = new DefaultPicoContainer(); container....

    在Eclipse RCP中实现控制反转(IoC).doc

    控制反转(Inversion of Control,IoC)和依赖注射(Dependency Injection,DI)是面向对象编程中降低模块间耦合的技术,遵循“好莱坞原则”,即组件不再自行创建和管理依赖,而是由一个外部容器或框架负责管理和...

    Spring搞笑教程

    - **基于接口的实现**(IoC Type 1):对象需要实现一个特定的接口,比如Servicable接口,并提供一个以ServiceManager为参数的服务方法。这种方式主要用于像Avalon Framework这样的框架。 - **基于访问器的实现**...

    ioc模式与工厂模式的比较[借鉴].pdf

    在第三种类型的IOC模式中,依赖关系在对象构造时就已完成,如PicoContainer和HiveMind,这要求在构造函数中注入依赖对象,使得对象一旦创建,其依赖关系就已经确定。 总结来说,工厂模式关注的是对象的创建,而IOC...

    Android代码-picocontainer

    PicoContainer 3.x is in Git at Github and Codehaus (mirrors), and is a work in progress. PicoContainer 3.x is good enough to use in production, but it is not finished yet. Goals over 2.x The major ...

    Java轻量级容器的比较.pdf

    **Spring Framework** 是一个功能全面的轻量级容器,它不仅提供了依赖注入,还包含了面向方面编程(AOP)模型,以及与各种Java企业级API的集成。Spring支持setter、构造函数和方法注入,其中setter注入是最常见的...

    jbehave-pico-3.9-beta-4.zip

    2. **PicoContainer**:PicoContainer 是一个小型的依赖注入框架,它简单且易于使用,适用于那些希望避免重型IoC容器的项目。在 JBehave 中,PicoContainer 负责管理测试组件的生命周期和依赖关系。 3. **Vert.x**...

    cucumber-picocontainer-example

    CucumberPicoContainer示例开发环境安装Git( ) 安装JDK 1.5+( 或 ) 安装Maven 3( )下载git clone git@github....jar target/cucumber-picocontainer-example-jar-with-dependencies.jar

    Spring_3.x企业应用开发实战 目录

    - **NanoContainer**:另一个轻量级的 DI 容器。 - **Google Guice**:Google 提供的一个轻量级 DI 框架。 - **Jdon Framework**:提供了一系列企业级应用开发工具。 - **1.12 小结** - **总结**:介绍了 ...

    DI容器框架Google Guice与Spring框架的区别

    这里提到了更多的DI容器,如Spring、PicoContainer和EJB容器,但主要关注的是Guice与Spring的对比。这暗示我们将深入比较Guice和Spring在实现DI时的具体特点,以及它们与其他DI容器相比的独特之处。 **详细知识点:...

    IOCPerformanceTest

    1. **容器初始化**:这是衡量框架性能的第一个环节,涉及到配置文件解析、组件扫描和依赖注入准备等工作。性能更好的框架应该能在短时间内完成这些操作,不影响应用的快速启动。 2. **对象实例化**:不同的IOC框架...

    Martin Fowler 控制反转与依赖注入

    IoC模式通过将依赖关系的控制权转移到容器或外部实体上来解决这一问题。这样,对象不再直接管理自己的依赖,而是由容器负责依赖关系的创建和注入。 #### 依赖注入(DI) 依赖注入是IoC模式的一种具体实现方式。它...

    codepot-vending-machine:自动售货机代码罐

    时髦的IoC容器评论kata Kata旨在熟悉所选的IoC容器(例如Guice,PicoContainer,Hk2,Dagger等)。 练习的目的是使您可以检查所用容器的api。 下载专案切换到适当的分支机构(例如team01) 阅读故事,实施,运行测试...

    JBoss MicroContainer分析及应用

    通过以上分析可以看出,JBoss MC是一个功能强大、设计精良的服务容器,它不仅适用于轻量级服务的管理,而且能够方便地集成到各种复杂的应用环境中。随着JBoss 5的推出,JBoss MC的功能得到了进一步增强,成为了一个...

    spring入门好教程

    IoC使得应用程序代码对Spring的依赖降到最低,甚至没有,这一原则贯穿于Spring的设计之中,赋予了普通Java对象(POJO)更大的灵活性。通过这种方式,Spring不仅方便了单元测试,允许开发者进行有效的测试驱动开发...

    J2EE开源框架

    PicoContainer 则是一个轻量级的 IoC 容器,无需 XML 配置。 - **规则引擎**:Drools 是一个基于规则的引擎,支持 JSR-94 标准,可用于实现复杂的业务逻辑处理。 - **公共组件包**:Apache Commons 包含了大量的...

Global site tag (gtag.js) - Google Analytics