欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

spring回顾系列:Bean的初始化与销毁

程序员文章站 2022-05-21 22:33:37
...

要想在使用bean之前或者使用之后做一些操作,spring提供了两种实现方式:

  1. 使用@Bean的initMethod和destroyMethod(相当于XML配置方式的init-methoddestroy-method
  2. 使用注解@PostConstruct和@PreDestroy
  • 示例

public class DemoService {

	public void init() {
		System.out.println("初始化时调用----->DemoService");
	}
	
	public DemoService() {
		super();
		System.out.println("构造函数------->DemoService");
	}
	
	public void destroy() {
		System.out.println("销毁时调用------>DemoService");
	}
}

以上使用第一种方式来实现。

public class DemoPrototypeService {

	@PostConstruct
	public void init() {
		System.out.println("初始化时调用----->DemoPrototypeService");
	}
	
	public DemoPrototypeService() {
		super();
		System.out.println("构造函数------->DemoPrototypeService");
	}
	
	@PreDestroy
	public void destroy() {
		System.out.println("销毁时调用------>DemoPrototypeService");
	}
}
以上使用注解实现。

配置

@Configuration
@ComponentScan("com.ys.base.mocktest")
public class Config {

    @Bean(initMethod="init",destroyMethod="destroy")//声明初始化方法和销毁方法
    public DemoService getDemoService() {
        return new DemoService();
    }
    
    @Bean
    public DemoPrototypeService getDemoPrototypeService() {
        return new DemoPrototypeService();
    }
}

运行

public class Application {

	public static void main(String[] args) {
		AnnotationConfigApplicationContext context = 
				new AnnotationConfigApplicationContext(Config.class);
		DemoService demoService1 = context.getBean(DemoService.class);
		DemoPrototypeService demoPrototypeService1 = 
                                context.getBean(DemoPrototypeService.class);	
		context.close();
	}
}
结果

构造函数------->DemoService
初始化时调用----->DemoService
构造函数------->DemoPrototypeService
初始化时调用----->DemoPrototypeService
销毁时调用------>DemoPrototypeService
销毁时调用------>DemoService

通过以上示例能够清楚的明白两种方式的使用,但是这里推荐使用注解的形式。