context.xmlにBeanが追加されないように、@Repositoryのスプリングアノテーションを使用したいと思います。私はibatis統合を使用しているので、私のリポジトリクラスは次のようになります
@Repository("userDao")
public class UserDaoMybatis extends SqlMapClientDaoSupport implements UserDao {
// ...
}
SqlMapClientDaoSupport(春のライブラリクラス)には、@Autowiredまたは@Resourseで注釈が付けられていない必須プロパティを設定するためのfinalメソッドがあります
public final void setSqlMapClient(SqlMapClient sqlMapClient) {
if (!this.externalTemplate) {
this.sqlMapClientTemplate.setSqlMapClient(sqlMapClient);
}
}
SqlMapClient Beanは、Springcontext.xmlで定義されています。userDao BeanがXMLで定義されている場合は正常に機能しますが、@ Repositoryアノテーションを配置してBean宣言を削除すると、次の例外が発生します。
java.lang.IllegalArgumentException: Property 'sqlMapClient' is required
回避策は、次のような新しいメソッドを追加することです。
@Aitowired
injectSqlMapClient(SqlMapClient sqlMapClient) {
setSqlMapClient(sqlMapClient);
}
しかし、それは醜いように見えます
定義せずにプロパティを注入する他の方法はありますか?