我在使用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 混合使用没有问题。只要你的豆子被春豆工厂扫描,这是一个有效的语法。自动布线环境到道类有问题,看看戴夫在这里写了什么,你可以在这个链接中找到解决方案(另一个答案)