2016-05-06 31 views
0

由組件掃描自動創建以明確地定義豆豆,能夠定義init和通過註解破壞方法中,在彈簧配置類:如何設置Init方法用於在彈簧

@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的一部分,當我使用這個註解時,我有錯誤

「PostConstruct不能解析爲類型」。

不知何故,Eclipse似乎不知道如何自動導入此註釋。一些瀏覽後,我發現,使用

import javax.annotation.PostConstruct; 

作品,但是有一個警告說:

訪問限制:類型「PostConstruct」不是API(限制所需的庫「C:\ Program Files文件\的Java \ jre1.8.0_45 \ LIB \ rt.jar的')

所以我有2個問題:

  1. 春天在什麼對補償內置的機制來聲明init和destroy方法onent掃描的豆嗎?

  2. 爲什麼會出現以下錯誤:訪問限制:類型'PostConstruct'不是API(對所需庫'C:\ Program Files \ Java \ jre1.8.0_45 \ lib \ rt.jar'的限制)使用@PostConstruct?

在此先感謝!

+0

你需要在spring配置文件中包含,其中一個答案說清楚,如何使註解在春季可用http://stackoverflow.com/questions/5919982/is-there-什麼樣predestroy合的彈簧-AS-在最城堡溫莎 – awsome

回答

1

您可以實現InitializingBean接口。它聲明afterPropertiesSet方法應該做你想要的。

Spring Javadoc InitializingBean

J2EE - 春當量

@PostConstruct - InitializingBean

@PreDestroy - DisposableBean

編輯:在第一 排序誤解了這個問題的。爲Person創建一個接口,它擴展了InitializingBeanDisposableBean,實現聲明的afterPropertiesSet()/destroy()方法,並將@Bean帶註釋的方法的返回類型更改爲接口。

相關問題