2012-01-04 115 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