Spring:@PostConstruct未被调用

时间:2012-12-17 17:27:21

标签: java spring

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拦截器外,该方法不得有任何参数
  • 方法的返回类型必须为void。
  • 方法绝不能抛出已检查的异常。
  • 应用PostConstruct的方法可以是public,protected,package private或private。
  • 方法绝不能是静态的。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

如果没有拼写错误,我相信正确的是

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

因为AppComponentFactory位于myproject.web.factory包中。