IoC 容器的实现
主要实现
Java SE
Java Beans
Java Beans 还有一些GUI的功能.
Java ServiceLoader SPI
从Java 1.6 开始引入, 被 NetBeans 大量应用, NetBeans通过这种方式来加载一些组件
JNDI(Java Naming and Directory Interface)
Java命名和目录接口, 帮助我们去查找相应资源, IoC通常是靠名称, 而这里靠目录的话就会有一些嵌套.
Java EE
EJB(Enterprise Java Beans)
传统的IoC实现, 从 EJB 3.0 开始出现一个分水岭, 出现了依赖注入和依赖查找并存的情况. EJB1或者2的时候, 大部分都是依赖查找的.
Servlet
一个web技术怎么和IoC相关上了? 涉及到里面使用的设计模式, 一种就是Model2, 其特性是通过 Java EE, 或者是servlet, 去获取如数据库源, 线程池或消息服务等, 也是通过JNDI技术从server容器或者EJB容器中获取.
开源
Apache Avalon(http://avalon.apache.org/closed.html)
已经不更新了
PicoContainer(http://picocontainer.com/)
其实springFramework的依赖注入的一个技术灵感正式来源于这个框架.
Google Guice(https://github.com/google/guice)
国外目前也很流行的框架, 只是国内不太出名
Spring Framework(https://spring.io/projects/spring-framework)
绝对避不开的框架, 不多说