Java 如何为spring中组件扫描自动创建的bean设置Init方法
在显式定义的bean中,可以通过Spring配置类上的注释定义init和destroy方法:Java 如何为spring中组件扫描自动创建的bean设置Init方法,java,eclipse,spring,spring-mvc,postconstruct,Java,Eclipse,Spring,Spring Mvc,Postconstruct,在显式定义的bean中,可以通过Spring配置类上的注释定义init和destroy方法: @Configuration @ComponentScan public class Appconfig { @Bean(name="Andre",initMethod="init",destroyMethod="destroy") @Scope("singleton") public Person person() { Person person = new P
@Configuration
@ComponentScan
public class Appconfig {
@Bean(name="Andre",initMethod="init",destroyMethod="destroy")
@Scope("singleton")
public Person person() {
Person person = new Person(1,"Andre");
person.setTaxId(5);
return person;
}
但是,如果bean是由spring通过组件扫描自动创建的,那么如何实现呢
我已经了解到,为了使用组件扫描创建的bean实现相同的效果,init方法应该用@PostConstruct注释。然而,@PostConstruct不是Spring的一部分,当我使用这个注释时,我有一个错误
“后构造无法解析为类型”
不知何故,Eclipse似乎不知道如何自动导入此注释。经过一番浏览,我发现使用
import javax.annotation.PostConstruct;
有效,但警告如下:
访问限制:“PostConstruct”类型不是API(对所需库“C:\Program Files\Java\jre1.8.0\U 45\lib\rt.jar”的限制)
所以我有两个问题:
提前谢谢 您可以实现
初始化bean
接口。它声明了afterPropertiesSet
方法,该方法应该完全满足您的要求
J2EE-Spring等价物
@PostConstruct
-初始化bean
@PreDestroy
-DisposableBean
编辑:
一开始有点误解了这个问题。为Person
创建一个接口,该接口扩展了InitializingBean
或DisposableBean
,实现了声明的AfterPropertieSet()
/destroy()
方法并将@Bean
带注释方法的返回类型更改为接口应该可以做到这一点。您需要在spring配置中包括,其中一个答案清楚地说明了如何在spring中使用注释