2012-01-04 75 views
6

我該如何告訴Spring運行init方法?我需要獲得Proxied Async類並使用它進行一些初始化。Spring配置Init方法

@Configuration 
@EnableAsync 
public class Config { 

@Bean 
public AsyncBean asyncProxyBean(){ 
    return new AsyncBean(); 
} 

public void init(){ 
    doStuffWithProxy(asyncProxyBean()); 
} 

@Bean 
public String thisIsHack(){ //this runs the init code but bean is a bit hacky 
    doStuffWithProxy(asyncProxyBean()); 
    return ""; 
} 

} 

回答

0
  • 通常你可以做的事情原來的對象。你很少需要做的事情與代理 - 你靠一些春天的內部
  • (它與動態代理的工作方式),如果你真的需要代理,那麼我想你可以嘗試使用BeanPostProcessor
這樣
+0

在我的情況下,代理是一個AsyncEventHandler,我需要註冊與事件生產者的處理程序。 – 2012-01-04 22:35:41

4

使用@PostConstruct註釋連同:

  • <context:annotation-config />
  • <bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor" />

有關詳細信息,請參見here。這是一個Java EE註釋,因此可能不適合您的環境。

+0

我沒有需要任何XML來讓這個工作..只需@PostConstruct足夠 – 2012-01-04 22:43:30

+1

@DD。因爲你沒有提供任何關於你的環境的信息,所以不可能提供一個完美的答案,所以我包含了一些細節 - 而不僅僅是一個鏈接,而這個鏈接是令人厭惡的。除非* something *表示應該執行註釋處理,否則不會處理此註釋。 – 2012-01-04 22:46:13