Spring学习--5 Bean生命周期管理
程序员文章站
2022-05-24 18:13:27
...
Bean生命周期管理
目的:掌握Bean生命周期管理方法,主要是标明initMethod和destroyMethod方法。
两种形式可用来管理Bean的初始化和销毁,一种是在配置中采用@Bean注解,@Bean(initMethod=”INIT_METHOD”, destroyMethod=”DESTROY_METHOD”);另外一种是在Bean的方法上分别注解@PostConstruct和@PreDestroy,用来标明initMethod和destroyMethod方法。
1、@Bean形式的Bean
package com.prepost;
import org.springframework.context.annotation.Bean;
/**@Bean形式的Bean
* @author apple
*
*/
public class BeanWayService {
public void init() {
System.out.println("@Bean-init-method");
}
public void destroy() {
System.out.println("@Bean-destory-method");
}
public BeanWayService() {
super();
System.out.println("初始化构造函数-BeanWayService");
}
}
2、JSR250形式的Bean
package com.prepost;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
/**JSR250形式的Bean
* @author apple
*
*/
public class JSR250WayService {
@PostConstruct
public void init() {
System.out.println("JSR250-init-method");
}
@PreDestroy
public void destroy() {
System.out.println("JSR250-destroy-method");
}
public JSR250WayService() {
super();
System.out.println("初始化构造函数-JSR250WayService");
}
}
3、Configuration配置类
package com.prepost;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan("com.prepost")
public class PrePostConfig {
//@Bean形式声明初始化方法和销毁方法
@Bean(initMethod="init", destroyMethod="destroy") public BeanWayService beanWayService() {
return new BeanWayService();
}
@Bean
public JSR250WayService jsr250WayService() {
return new JSR250WayService();
}
}
4、测试
package com.prepost;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Bootrap {
public static void main(String[] args) {
AnnotationConfigApplicationContext context =
new AnnotationConfigApplicationContext(PrePostConfig.class);
context.getBean(BeanWayService.class);
context.getBean(JSR250WayService.class);
context.close();
}
}