为什么我不能将 Spring 环境对象注入我的 bean 中?



我在使用Spring框架的Java应用程序中遇到了以下问题。

所以我有以下情况,进入根上下文.xml配置文件我有这个 bean 配置:

<!-- Definition for datiPianiInterventiDaoImpl bean -->
   <bean id="datiPianiInterventiDaoImpl" class="it.myCompany.myclient.batch.dao.DatiPianiInterventiDaoImpl">
      <property name="dataSource"  ref="dataSource" />    
   </bean>  

好的,所以它工作正常,这个豆子被正确创建并且工作正常。

问题是,现在在这个 bean 中,我还必须注入 org.springframework.core.env.Environment Spring 类的意图。

所以我尝试以这种方式做:

public class DatiPianiInterventiDaoImpl implements DatiPianiInterventiDao {
    @Autowired
    private Environment env;
    ...................................................
    ...................................................
    ...................................................
}

但这似乎不起作用,因为当我执行应用程序时,环境环境的值

@Autowired被激活,因为我在我的项目的其他类中使用此注释。

那么问题可能出在哪里呢?我在想,也许这可能取决于这样一个事实,即我将我的豆子定义为id="datiPianiInteventiDaoImpl"到我的根上下文中.xml(在这里我也定义了注入到这个豆子中的依赖关系)。

所以也许我不能将 XML 依赖注入与@Autowired混合使用?

怎么了?我错过了什么?如何将环境实例相应地注入到此类中?

环境为空的可能原因:

  • 您在 Environemnet 类之上缺少@Component/@Service注释。
  • 您使用 new 运算符创建了类 DatiPianiInterventiDaoImpl 的某个实例。
  • 您的条目:是否对应于正确的软件包基础?
  • 我假设注释配置存在,因为@Autowired在其他地方工作。
  • 尝试用@Service注释您的DatiPianiInterventiDaoImpl

将 XML 依赖注入与 @Autowired 混合使用没有问题。只要你的豆子被春豆工厂扫描,这是一个有效的语法。自动布线环境到道类有问题,看看戴夫在这里写了什么,你可以在这个链接中找到解决方案(另一个答案)

最新更新