spring容器对Bean组件的管理
1. Bean对象创建时机
默认是随着容器创建,可以使用lazy-init=true (在调用getBean创建)
延迟创建,也可以使用<beans default-lazy-init=true> 批量延迟创建
2. Bean对象创建模式
- 默认是单例模式,可以使用scope属性改变
- singleton:单例,每次调用getBean返回同一个对象
- prototype:原型,没调用getBean返回新对象
- request:仅限于Web环境,表示bean对象生命周期和request生命周期相同
- session:仅限于Web环境,等同于Web中的session
- global session:仅限于Web环境,等同于Web中的Application
3、Bean的销毁
- init-method属性用于指定初始化方法
- destory-method属性用于指定销毁方法,仅适用于singleton模式
DI依赖注入
DI(依赖注入)是IOC实现的重要技术,2种方式:
1、setter方法注入
2、构造方式注入
注入类型:简单值、集合、Bean对象
IOC和DI关系
Spring是具有IOC特性的框架
实现IOC是由Spring容器来完成的,Spring容器通过依赖注入DI建立起对象(组件、Bean)之间的关系
DI是IOC实现的一种手段,IOC通过DI来实现
4、注解配置方式
- 常用配置方式有XML文档配置,还有一种是通过注解方式配置
- 采用注解方式的目的就是为了简化XML模式
- 注解方式(注释)是JDK5版本提供的,之前的版本不支持。既JDK1.4及以下版本不支持
- Spring2.5版本后支持注解方式,之前的不支持
1)组件自动扫描功能( 首先需要在applicationContext.xml中添加context:componet-scan/)
a、扫描Bean组件的注解,替代XML中的元素的定义
@Service用于Service业务组件
@Control用于Action控制组件
@Responsitory用于DAO数据库访问组件
@Component用于其他组件
Bean组件扫描到容器后,默认名字为类名(首字母小写)如果需要自定义名称可以使用@service(“id名”)
b、依赖注入的注解标记
@Resource按名称@resource(name=“id名”)
JDk提供的先按类型后按名称来自动装配
@AutoWirde自动名称
@Qualifier(“id名”)
Spring提供的先按名称后按类型来自动装配
@AutoWirde自动名称
@Qualifier(“id名”)
@AutoWirde和 @Resource功能相同,@AutoWirde也是用于自动装配的 ,就是在自定义名称是需要再多加一个 @Qualifier(“id名”)
来指定自定义名称。 @AutoWirde后不能直接使用自定义名称
c、其他注解
@scope等价于
@PostConstruct 等价于
@PreDestory等价于
注解方式和XML形式各有优劣,注解方式现在比较流行
注解方式的优点是使用方便,缺点是java代码掺合在一起,不好修改
XML方式的优点是修改方便,缺点是配置工作量大
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)