【问题标题】:@Autowired annotation missing in .class file.class 文件中缺少@Autowired 注释
【发布时间】:2014-07-11 09:15:26
【问题描述】:

我似乎遇到了 java 编译器的奇怪行为。 基本上我在 java 类中有以下代码

@Autowired
SubProcessDao subProcessDao;

@Autowired
ProcessDao processDao;

public void startProcess(BatchDetail batchDetail){
processDao.process(batchDetail.getCode());//// Line1
}

当它被我们的构建团队部署到服务器时, 上面的一段代码 在 processDao 调用 process 方法的第 1 行开始失败 因为空指针异常。

我很惊讶看到这一点,因为它在所有机器上都运行良好,代码看起来也很好。但在进一步调查中,我发现 war 文件中存在的上述 .class 文件似乎缺少@ processDao 的自动装配注释... '.class' 文件反编译后如下所示:

@Autowired
SubProcessDao subProcessDao;
ProcessDao processDao;

查看 ProcessDao 上缺少的 @Autowired 注释。 在构建团队构建代码的 svn 存储库中,从未出现过 ProcessDao 中缺少 @Autowired 注释的实例。 有没有人遇到过这种问题?或者有人可以解释这种行为

这里使用的java版本是1.6.27,使用的构建工具是maven

【问题讨论】:

  • 部署了另一个版本?
  • 我们使用 svn 来构建代码,所以不要认为这应该是问题

标签: java spring build maven-3 spring-annotations


【解决方案1】:

也许在 ProcessDao 类中,您忘记使用 @Component 将其声明为 Spring bean

【讨论】:

  • 好吧,事实并非如此。因为创建了 processdao,@Component 出现在文件中。
猜你喜欢
  • 2015-12-04
  • 2013-09-17
  • 1970-01-01
  • 1970-01-01
  • 2011-01-12
  • 2023-03-10
  • 1970-01-01
  • 2019-09-07
  • 1970-01-01
相关资源
最近更新 更多