我无法使@Inject正常工作。我正在尝试使用@Inject注释从xml注入bean,但收到错误消息"java.lang.IllegalArgumentException: 'dataSource' or 'jdbcTemplate' is required"

我也一直在尝试将@Qualifier("dataSource")@Qualifier结合使用,但是无论我把"The annotation @Qualifier is disallowed for this location"放在哪里,它都会说@Inject

我一直在阅读有关@Inject的大量文档,但似乎找不到任何提及xml中声明的bean特殊处理的内容。

但是,我猜想Spring正在尝试在扫描dataSourceBean之前创建FooDaoImpl bean。

我将如何使用@Inject注入在xml文件中声明的dataSource bean?
使用ojit_code甚至可能吗?


FooDaoImpl.java

@Repository
public class FooDaoImpl extends NamedParameterJdbcDaoSupport implements FooDao {

@Inject
private DataSource dataSource;

DSLContext create = DSL.using(dataSource, SQLDialect.DB2);

}

Spring-Module.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">

<context:annotation-config />
<context:component-scan base-package="com.example.foobar" />

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
    destroy-method="close">
    <property name="driverClass" value="com.ibm.db2.jcc.DB2Driver" />
    <property name="jdbcUrl" value="jdbc:db2://localhost:50000/BLABLA" />
    <property name="user" value="PAPAYA" />
    <property name="password" value="COCONUT" />
</bean>

干杯!

最佳答案

在 Spring 可以正常使用。我使用@Autowired批注,而不是@Inject

关于spring - 使用@Inject注释注入(inject)在xml文件中声明的bean,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16355724/

10-15 11:26