为什么我不能将 Spring 环境对象注入到我的 bean 中?
Why I can't inject a Spring Environment object into my bean?
我在使用 Spring 框架的 Java 应用程序中遇到以下问题。
所以我有以下情况,进入root-context.xml配置文件我有这个bean配置:
<!-- Definition for datiPianiInterventiDaoImpl bean -->
<bean id="datiPianiInterventiDaoImpl" class="it.myCompany.myclient.batch.dao.DatiPianiInterventiDaoImpl">
<property name="dataSource" ref="dataSource" />
</bean>
好的,所以它工作正常,这个 bean 已正确创建并且工作正常。
问题是现在我必须在这个 bean 中注入 org.springframework.core.env.Environment Spring class.[= 的实例13=]
所以我尝试这样做:
public class DatiPianiInterventiDaoImpl implements DatiPianiInterventiDao {
@Autowired
private Environment env;
...................................................
...................................................
...................................................
}
但它似乎无法工作,因为当我执行我的应用程序时,Environment env 的值是 null.
@Autowired 已激活,因为我在我的项目的其他 classes 中使用了此注释。
那可能是什么问题呢?我在想,这可能取决于我将 id="datiPianiInteventiDaoImpl" 的 bean 定义为 root-context.xml(这里我还定义了注入到这个 bean 中的依赖项)。
所以也许我不能将 XML 依赖注入与 @Autowired 混合使用?
怎么了?我错过了什么?我怎样才能正确地将 Environment 实例注入这个 class?
环境为空的可能原因:
- 您缺少 Environemnet 顶部的 @Component / @Service 注释 class。
- 您使用 new 运算符在某处创建了 class DatiPianiInterventiDaoImpl 实例。
- 您的条目是否对应于正确的包基础?
- 我假设注释配置存在,因为@Autowired 在别处工作。
- 尝试使用 @Service 注释您的 DatiPianiInterventiDaoImpl
将XML 依赖注入与@Autowired 混合使用没有问题。只要您的 bean 被 spring bean factory 扫描,这就是一个有效的语法。将 Enviroment 自动装配到 Dao classe 时出现问题,请参阅 dave 写的内容 here,您可以在此 link(其他答案)
中找到解决方案
我在使用 Spring 框架的 Java 应用程序中遇到以下问题。
所以我有以下情况,进入root-context.xml配置文件我有这个bean配置:
<!-- Definition for datiPianiInterventiDaoImpl bean -->
<bean id="datiPianiInterventiDaoImpl" class="it.myCompany.myclient.batch.dao.DatiPianiInterventiDaoImpl">
<property name="dataSource" ref="dataSource" />
</bean>
好的,所以它工作正常,这个 bean 已正确创建并且工作正常。
问题是现在我必须在这个 bean 中注入 org.springframework.core.env.Environment Spring class.[= 的实例13=]
所以我尝试这样做:
public class DatiPianiInterventiDaoImpl implements DatiPianiInterventiDao {
@Autowired
private Environment env;
...................................................
...................................................
...................................................
}
但它似乎无法工作,因为当我执行我的应用程序时,Environment env 的值是 null.
@Autowired 已激活,因为我在我的项目的其他 classes 中使用了此注释。
那可能是什么问题呢?我在想,这可能取决于我将 id="datiPianiInteventiDaoImpl" 的 bean 定义为 root-context.xml(这里我还定义了注入到这个 bean 中的依赖项)。
所以也许我不能将 XML 依赖注入与 @Autowired 混合使用?
怎么了?我错过了什么?我怎样才能正确地将 Environment 实例注入这个 class?
环境为空的可能原因:
- 您缺少 Environemnet 顶部的 @Component / @Service 注释 class。
- 您使用 new 运算符在某处创建了 class DatiPianiInterventiDaoImpl 实例。
- 您的条目是否对应于正确的包基础?
- 我假设注释配置存在,因为@Autowired 在别处工作。
- 尝试使用 @Service 注释您的 DatiPianiInterventiDaoImpl
将XML 依赖注入与@Autowired 混合使用没有问题。只要您的 bean 被 spring bean factory 扫描,这就是一个有效的语法。将 Enviroment 自动装配到 Dao classe 时出现问题,请参阅 dave 写的内容 here,您可以在此 link(其他答案)
中找到解决方案