我無法讓@Inject
正常工作。我正在嘗試使用@Inject
註釋從xml注入bean,但我收到了錯誤消息 "java.lang.IllegalArgumentException: 'dataSource' or 'jdbcTemplate' is required"
。使用@Inject註釋注入xml文件中聲明的bean
我也一直在嘗試與@Qualifier("dataSource")
結合,但無論我把@Qualifier
它說"The annotation @Qualifier is disallowed for this location"
。
我一直在閱讀關於@Inject
的大量文檔,我似乎無法找到任何提及在xml中聲明的任何特殊處理的bean。
不過,我猜測Spring在掃描dataSourceBean之前正試圖創建FooDaoImpl bean。
我該如何去使用@Inject
注入xml文件中聲明的dataSource bean? 它甚至有可能使用@Inject
?
FooDaoImpl.java
@Repository
public class FooDaoImpl extends NamedParameterJdbcDaoSupport implements FooDao {
@Inject
private DataSource dataSource;
DSLContext create = DSL.using(dataSource, SQLDialect.DB2);
}
彈簧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>
乾杯!
嘗試添加「@ Component」作爲類的註釋嗎? – 2013-05-03 09:37:59
@我覺得'@ Repository'是一個'@ Component'。我也嘗試過這種方法,但恐怕沒有用。不管怎麼說,還是要謝謝你! – Roger 2013-05-03 10:10:57