3

@Injectまともに仕事ができません。@Inject注釈 を使用して xml から Bean を注入しようとしていますが、エラー メッセージが表示されます"java.lang.IllegalArgumentException: 'dataSource' or 'jdbcTemplate' is required"

との組み合わせも試しています@Qualifier("dataSource")が、どこに置いても@Qualifierと書いてあります"The annotation @Qualifier is disallowed for this location"

私はたくさんのドキュメントを読んでいます@Injectが、xml で宣言された Bean の特別な扱いについて言及しているものは何も見つからないようです。

ただし、Spring は dataSourceBean をスキャンする前に FooDaoImpl Bean を作成しようとしていると思います。

@Injectxml ファイルで宣言された dataSource Bean を注入するにはどうすればよいですか? を使用して、それは可能@Injectですか?

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>

乾杯!

4

3 に答える 3

1

これはSpringでうまく機能します。@Autowiredではなく、注釈を使用し@Injectます。

于 2013-05-03T09:34:29.183 に答える
0

@Inject私は自分の Dao に dataSource を注入するために使用することができました。@PostConstruct次のように、これを達成するためにa を使用しました。

@Inject
private DataSource dataSource;

@PostConstruct
private void initialize(){
    setDataSource(dataSource);
}

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

これを達成するためのより良い、または「よりクリーンな」方法があると確信していますが、見つけることができたものはありません。ご提案いただきありがとうございます。

于 2013-05-04T14:27:54.743 に答える
0

Annotation @Qualifier is disallowed for this locationメッセージを取り除くには、 annotation を使用する必要があります@interface

于 2013-12-05T10:32:07.163 に答える