您的位置:首页 > 编程语言 > Java开发

spring3权威指南-学习(1)spring的2种DI容器

2014-11-13 15:12 357 查看
spring提供了两种DI(控制反转容器),BeanFactory和ApplicationContext,它们的关系如下:



开发者经常用到BeanFactory的子类XmlBeanFactory,或者用到ApplicationContext类(企业系统开发中经常用这个,BeanFactory驾驭不了)

1、面向java ME、java SE的BeanFactory:



2、面向java EE ApplicationContext,有以下实现:



测试代1-BeanFactory:

public static void main(String [] args){
//从classpath装卸xml配置信息
Resource resource  = new ClassPathResource("applicationContext-services.xml");
//实例化ioc容器
BeanFactory  factory  = new XmlBeanFactory(resource);
//获得受管Bean
RedisDelegateService  redisService  = (RedisDelegateService)factory.getBean("redisService");
redisService.set(0, "spring3权威开发指南", "测试Spring静态获得配置文件创建Bean");
}

测试代码2-ApplicationContext:

ApplicationContext  context = new ClassPathXmlApplicationContext("applicationContext-services.xml");
//获得受管Bean
RedisDelegateService  redisService  = (RedisDelegateService)context.getBean("redisService");
redisService.set(0, "spring3权威开发指南111", "测试Spring静态获得配置文件创建Bean");


配置文件是:

<bean id="redisService"  class="com.solr.adjust.service.impl.RedisDelegateService">
<property name="jedisConnectionFactory"  ref ="jedisConnectionFactory"/>
</bean>

<bean id="jedisConnectionFactory" 	class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
<property
name="hostName"
value="*.*.*.*" />
<property
name="port"
value="6379" />
<property
name="password"
value="123" />
<property
name="poolConfig"
ref="jedisPoolConfig" />
</bean>

<bean id="jedisPoolConfig"  class="redis.clients.jedis.JedisPoolConfig"	>
<property
name="maxTotal"
value="30" />
<property
name="maxIdle"
value="10" />
<property
name="maxWaitMillis"
value="3000" />

</bean>


三种依赖注入方式:

1、sett注入

2、构造器注入

3、注解注入(属性注入),用@AutoWired、 @Resource、@EJB等注解

4、方法注入,包括查找(lookup)方法注入和替换(replacement)方法注入。

总结:我们没有手工构建任何bean实例,是控制翻转容器BeanFactory或ApplicationContext创建的 redisService实例,以及创建的jedisConnectionFactory和redisService的依赖关系。

懒惰的BeanFactory和ApplicationContext组件的区别:

1、初始化BeanFactory实例化以后,IOC容器并不会预先实例化配置文件中声明的POJO,而是在使用的时候才会实例化受管的bean。

2、对于ApplicationContext则不痛,一旦构建完ApplicationContext对象后,IOC便会预先实例化配置文件中已经声明的各个受管POJO。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring技术 DI容器