A类:

package myproject.web.factory.components;

@Component
public class AppComponentFactory{
}

B级
package myproject.web.components;
import myproject.web.factory.components.AppComponentFactory;

@Component
public class AdminTabSheet{

   @Autowired
   private AppComponentFactory appComponentFactory;

   public AdminTabSheet() {
   }

   @PostConstruct
   public void init() {
      // does something with appComponentFactory
   }
}

配置XML:
<context:component-scan base-package="myproject.spring" />

WebConfig.java:
package myproject.spring.config;

@Configuration
@ComponentScan(basePackages = { "myproject.web.components"})
public class WebConfig {

我遵守了http://docs.oracle.com/javaee/5/api/javax/annotation/PostConstruct.html中的所有规则:
  • 此注释只能注释一种方法。
  • 除了EJB拦截器
  • 之外,该方法不得具有任何参数。
  • 方法的返回类型必须为空。
  • 该方法一定不能抛出一个已检查的异常。
  • 应用于PostConstruct的方法可以是public,protected,package private或private。
  • 该方法一定不能是静态的。

  • 有任何想法吗?

    最佳答案

    如果没有错字,我相信正确的是

    @ComponentScan(basePackages = { "myproject.web"})
    

    因为AppComponentFactorymyproject.web.factory包中。

    关于java - Spring :@PostConstruct不被调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13918988/

    10-09 00:00