当我们定义一个Bean时,除了指定Bean的Class之外,还可以指定Bean的作用域及其生命周期。
Spring Bean的作用域
Spring Bean的作用域指的是Bean对象的创建和销毁方式。
常用的几个Bean的作用域如下:
- singleton:单例模式,容器只会创建一个Bean实例。默认作用域。
- prototype:原型模式,每次从Bean容器中获取Bean时都会创建一个新的实例。
- request:Web的request请求级别作用域。
- session:Web的session级别作用域。
- global session:全局session级别作用域(仅适用于portlet环境)。
示例1:单例模式
@Service
@Scope("singleton")
public class MyService {
// ...
}
上面的示例中,Bean的作用域设置为Singleton,表示容器只会创建这个Bean的一个实例。
示例2:原型模式
@Service
@Scope("prototype")
public class MyService {
// ...
}
上面的示例中,Bean的作用域设置为Prototype,表示每次从容器中获取Bean时都会创建一个新的实例。
Spring Bean的生命周期
Spring容器管理Bean的整个生命周期,包括Bean的实例化、属性设置、初始化、销毁等等。
Bean的生命周期可以分为以下三个阶段:
- 实例化
- 初始化
- 销毁
示例3:Bean的初始化和销毁
@Service
public class MyService implements InitializingBean, DisposableBean {
@Override
public void afterPropertiesSet() throws Exception {
// Bean初始化方法
}
@Override
public void destroy() throws Exception {
// Bean销毁方法
}
}
上面的示例中,MyService实现了InitializingBean和DisposableBean接口,这两个接口中分别有afterPropertiesSet和destroy方法,用于在Bean的初始化和销毁阶段进行回调操作。
示例4:使用@PostConstruct和@PreDestroy注解
@Service
public class MyService {
@PostConstruct
public void init() {
// Bean初始化方法
}
@PreDestroy
public void destroy() {
// Bean销毁方法
}
}
上面的示例中,MyService使用了@PostConstruct和@PreDestroy注解,分别表示在Bean的初始化和销毁阶段进行回调操作。
以上就是Spring Bean的作用域和生命周期的完整攻略。了解Bean的作用域和生命周期,对于合理使用Bean对象是非常有帮助的。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java之Spring Bean 作用域和生命周期 - Python技术站