开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第8天
自动装配
Spring的元素中包含一个autowire属性,可以通过设置autowire属性的值实现Bean的自动装配
| 默认值 | 描述 |
|---|---|
| default(默认值) | 由的上级元素的default-autowire属性确定 |
| byName | 根据元素id属性的值自动装配 |
| byType | 根据元素的数据类型(Ttpe)自动装配,如果一个Bean的数据类型,兼容另一个Bean中的数据类型,则自动适配 |
| constructor | 根据构造函数参数的数据类型进行byType模式的自动匹配 |
| no | 默认值,不适用自动装配,Bean依赖必须通过元素或ref属性定义 |
举例:
<bean id="userDao" class="com.hexiaoxing.dao.impl.StudentDaoImpl"></bean>
<bean id="studentService" class="com.hexiaoxing.service.impl.StudentServiceImpl" autowire="byName"></bean>
在StudenServiceImpl中定义了studentDao属性,这与配置文件中id为userDao的Bean相匹配,所以自动将id为studentDao的Bean装配到id为studentService的Bean中。我们就不用再使用property或注解进行装配了。
Bean的生命周期
Bean的生命周期是指Bean实例被创建、初始化和销毁的过程。在Bean的两种作用域singleton和prototype中,Spring容器对Bean的生命周期的管理是不同的。
在singleton的作用域中,Spring容器可以管理Bean的生命周期,控制着Bean的创建、初始化和销毁。 在prototype的作用域中,Spring容器只负责创建Bean实例,不会管理其生命周期
监控周期节点
在Bean的生命周期中,有两个时间点尤为重要,这两个时间点分别是Bean实例初始化后和Bean实例销毁前,在这两个时间节点通常需要完成一些指定操作,因此常常需要对这两个节点进行监控。
监控这两个节点有两种方式,一种是XML配置文件,一种是使用注解
注解的方式:
Spring容器提供了@PostConstruct用于监控Bean对象初始化节点,提供了@PreDestroy用于监控Bean对象销毁节点:
@PostConstruct
public void init(){
System.out.println("Bean的初始化完成,调用init()方法");
}
@PreDestroy
public void destroy(){
System.out.println("Bean销毁前调用destroy()方法");
}