Ich möchte die Spring-Annotation @Repository verwenden, um das Hinzufügen von Beans in context.xml zu vermeiden. Ich verwende die ibatis-Integration, daher sieht meine Repository-Klasse wie folgt aus
@Repository("userDao")
public class UserDaoMybatis extends SqlMapClientDaoSupport implements UserDao {
// ...
}
SqlMapClientDaoSupport (Spring-Bibliotheksklasse) hat eine finale Methode zum Einstellen der erforderlichen Eigenschaft, die nicht mit @Autowired oder @Resourse annotiert ist
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, funktioniert es gut, aber wenn ich @Repository Annotation setzen und entfernen Bean-Deklaration erhalte ich die folgende Ausnahme
java.lang.IllegalArgumentException: Property 'sqlMapClient' is required
Eine Abhilfe kann darin bestehen, eine neue Methode wie
@Aitowired
injectSqlMapClient(SqlMapClient sqlMapClient) {
setSqlMapClient(sqlMapClient);
}
aber es sieht hässlich aus
Gibt es eine andere Möglichkeit, yo injizieren die Eigenschaft ohne definiert?
1 Stimmen
Ich denke, Ihr Lösungsansatz ist ziemlich gut.