Ich möchte @Repository spring Annotation verwenden, um das Hinzufügen von Bean in context.xml zu vermeiden. Ich benutze ibatis Integration, so dass meine Repository-Klasse sieht wie folgt ausInjizieren der abgeleiteten Eigenschaft für @Repository-Bean ohne @Autowired in der Superklasse
@Repository("userDao")
public class UserDaoMybatis extends SqlMapClientDaoSupport implements UserDao {
// ...
}
SqlMapClientDaoSupport (Federbibliotheksklasse) hat letzte Methode für erforderlich Eigenschaft festlegen, die nicht mit @Autowired kommentierten oder @Resourse
public final void setSqlMapClient(SqlMapClient sqlMapClient) {
if (!this.externalTemplate) {
this.sqlMapClientTemplate.setSqlMapClient(sqlMapClient);
}
}
SqlMapClient Bean ist in Spring context.xml definiert. Wenn userDao Bean in XML definiert ist, es funktioniert gut, aber wenn ich @Repository Annotation setzen und Bohnen Erklärung entferne ich erhalte die folgende Ausnahme
java.lang.IllegalArgumentException: Property 'sqlMapClient' is required
Eine Abhilfe neue Methode wie
sein kann@Aitowired
injectSqlMapClient(SqlMapClient sqlMapClient) {
setSqlMapClient(sqlMapClient);
}
hinzufügen
aber es sieht hässlich aus
Gibt es einen anderen Weg yo die Eigenschaft injizieren, ohne definiert zu haben?
Ich denke, Ihre Workaround ist eine ziemlich anständige. – Bozho