IoC容器配置Bean(3)
来源:互联网 发布:手机淘宝旺旺名怎么改 编辑:程序博客网 时间:2024/06/05 09:20
<bean>之间的关系:
对一个大型应用来说可能有多个XML配置文件,在启动Spring容器时,可以通过一个Spring数组指定这些配置文件。Spring通过<import>将多个配置文件引入
到一个文件中,进行配置文件的集成。这样在启动Spring容器时,仅仅需要指定这个合并好的配置文件就可以。例如在bean2.xml中引入bean1.xml:
Bean的作用域:
有5中作用域类型:
singleton:Bean以单例方式存在
prototype:每次从容器中调用Bean时,都会返回一个新的实例
request:每次Http请求都会返回一个新的Bean
session:同一个Http Session共享一个Bean,不同的使用不同的Bean
globalSession:同一个全局Session共享一个Bean
singleton作用域:
Singleton中的Bean在同一Spring IoC容器中只有一个实例:
prototype作用域:
与采用singleton相反,每次都会创建新的Bean:
Web应用环境相关的Bean作用域:
在使用Spring的WebApplicationContext时,还需要使用另外三种Bean的作用域:request、session和globalsession。在使用这些作用域之前,必>须在Web容器中添加额外的配置。
我们需要通过ContextLoaderListener(或者ContextLoaderServlet)将Web容器与Spring容器整合。
在整合spring容器时使用ContextLoaderListener,实现ServletContextListener监听接口,ServletContextListener只负责监听Web容器启动和和关>闭的事件。RequestContextListener实现ServletRequestListener监听器接口,该监听器监听HTTP请求时间,Web服务器接受的每一次请求都会通知该监听器。
基于注解的配置:
使用注解定义Bean:Spring容器成功启动的三大要件是:Bean定义信息、Bean实现类以及Spring本身。我们使用@Component注解在类声明处进行标注,它可>以被Spring容器识别,Spring容器自动将POJO转换为容器管理的Bean。例如:
@Repository:用于对DAO实现类进行标注
@Service:用于对Service实现类进行标注
@Controller:用于对Controller实现类进行标注
` 我们可以通过context命名空间的component-scan的base-package属性指定一个需要扫描的基类包,spring容器会自动扫描这个基类包内的所有类,并从类的
注解信息中获取Bean的定义信息。
1)继承: <!--定义一个抽象的bean,抽象的原因是为了不让他实例化此Bean--> <bean id="abstractCar" class="com.baobaotao.tagdepend.Car" p:brand="红旗CA72" p:price="20000.00" p:color="黑色" abstract="true"/> <bean id="car3" p:color="红色" parent="abstractCar"/> <bean id="car4" p:color="白色" parent="abstractCar"/> 2)依赖: 一般情况下,使用<ref>元素来建立对其他的Bean的依赖关系,spring负责管理这些Bean的关系。当实例化一个Bean时,spring保证该Bean所依赖的其他Bean都已经初始化。Spring允许用户使用depends-on属性指定Bean前置依赖的Bean,前置依赖的Bean会在本Bean实例化之前创建好: <bean id="manager" class="com.baobaotao.tagdepend.CacheManager" depends-on="sysInit"/> <bean id="sysInit" class="com.baobaotao.tagdepend.sysInit"/> 3)引用: 假设一个<bean> 要引用另一个<bean>的id属性值,我们可以使用以下的配制方式: <bean id="car" class="com.baobaotao.tagdepend.Car"/> <bean id="boss" class="com.baobaotao.tagdepend.Boss"> <property name="carId"> <idref bean="car"/> </property> </bean>整合多个配置文件:
对一个大型应用来说可能有多个XML配置文件,在启动Spring容器时,可以通过一个Spring数组指定这些配置文件。Spring通过<import>将多个配置文件引入
到一个文件中,进行配置文件的集成。这样在启动Spring容器时,仅仅需要指定这个合并好的配置文件就可以。例如在bean2.xml中引入bean1.xml:
<import resource="classpath:com/baobaotao./impt/beans1.xml"/> <bean id="boss1" class="com.baobaotao.fb.Boss" p:name="John" p:car-ref="car1"/> <bean id="boss2" class="com.baobaotao.fb.Boss" p:name="John" p:car-ref="car2"/>假设我们已经在bean1.xml中配置了car1和car2的Bean,那么就可以加载配置成功。
Bean的作用域:
有5中作用域类型:
singleton:Bean以单例方式存在
prototype:每次从容器中调用Bean时,都会返回一个新的实例
request:每次Http请求都会返回一个新的Bean
session:同一个Http Session共享一个Bean,不同的使用不同的Bean
globalSession:同一个全局Session共享一个Bean
singleton作用域:
Singleton中的Bean在同一Spring IoC容器中只有一个实例:
<bean id="car" class="com.baobaotao.scope.Car" scope="singleton"/> <bean id="boss1" class="com.baobaotao.scope.Boss" p:car-ref="car"/> <bean id="boss2" class="com.baobaotao.scope.Boss" p:car-ref="car"/> <bean id="boss3" class="com.baobaotao.scope.Boss" p:car-ref="car"/>在容器内部boss1,boss2,boss3的car属性都指向同一个Bean
prototype作用域:
与采用singleton相反,每次都会创建新的Bean:
<bean id="car" class="com.baobaotao.scope.Car" scope="prototype"/> <bean id="boss1" class="com.baobaotao.scope.Boss" p:car-ref="car"/> <bean id="boss2" class="com.baobaotao.scope.Boss" p:car-ref="car"/>容器内部boss1,boss2的car属性分别创建一个新的Bean供自己使用。
Web应用环境相关的Bean作用域:
在使用Spring的WebApplicationContext时,还需要使用另外三种Bean的作用域:request、session和globalsession。在使用这些作用域之前,必>须在Web容器中添加额外的配置。
我们需要通过ContextLoaderListener(或者ContextLoaderServlet)将Web容器与Spring容器整合。
在整合spring容器时使用ContextLoaderListener,实现ServletContextListener监听接口,ServletContextListener只负责监听Web容器启动和和关>闭的事件。RequestContextListener实现ServletRequestListener监听器接口,该监听器监听HTTP请求时间,Web服务器接受的每一次请求都会通知该监听器。
基于注解的配置:
使用注解定义Bean:Spring容器成功启动的三大要件是:Bean定义信息、Bean实现类以及Spring本身。我们使用@Component注解在类声明处进行标注,它可>以被Spring容器识别,Spring容器自动将POJO转换为容器管理的Bean。例如:
package com.baobaotao.anno; import org.springframework.stereotype.Component; @Component("UserDao") public class UserDao{ ... } 以上代码等效于: <bean id="userDao" class="com.baobaotao.anno.UserDao"/>spring容器提供了三个功能基本和@Conponent等效的注解,他们分别用于对DAO、Service以及Web层的Controller进行注解:
@Repository:用于对DAO实现类进行标注
@Service:用于对Service实现类进行标注
@Controller:用于对Controller实现类进行标注
` 我们可以通过context命名空间的component-scan的base-package属性指定一个需要扫描的基类包,spring容器会自动扫描这个基类包内的所有类,并从类的
注解信息中获取Bean的定义信息。
0 0
- IoC容器配置Bean(3)
- Spring4.3入门 Ioc 容器中配置bean
- 在Spring IOC容器中配置Bean
- IOC容器和Bean的配置<03>
- Spring4.IoC容器bean配置详解
- spring 8 bean配置--IOC容器中bean的生命周期
- Spring 3 Ioc 容器装在bean
- IOC及Bean容器
- Spring4深入理解IOC&DI03----Bean配置--SpEL,IOC 容器中 Bean 的生命周期
- Spring学习笔记---2.1-IOC容器解析Bean配置信息
- Spring框架-IOC容器和Bean的配置(1)
- IoC容器中装配Bean
- Ioc容器装配Bean(2)
- Spring--IOC及Bean容器
- IoC容器装配Bean 上
- IoC容器装配Bean 下
- spring-IOC容器bean生命周期
- spring ioc 容器装配bean
- 栈的动态顺序存储表示
- 关于不同数据类型之间赋值的问题
- 《精益系列丛书》精益创业 互联网创业指导
- 人脸识别经典算法(一):特征脸(Eigenface)
- C# 图形面积计算
- IoC容器配置Bean(3)
- avformat_open_input
- android 上传文件到服务器代码实例
- WebRTC源代码探索之旅——多线程篇-8
- cordova android (一)
- Java进程间通信的方法
- viewpager与viewflipper详解以及横幅轮播页Banner
- uboot 分析及移植
- 头文件