Me gustaría utilizar @Repository spring anotation para evitar agregar bean en context.xml. utilizo la integración ibatis, por lo que mi clase repositorio se parece a estoinyectando propiedad derivada para @Repository bean sin @Autowired en super clase
@Repository("userDao")
public class UserDaoMybatis extends SqlMapClientDaoSupport implements UserDao {
// ...
}
SqlMapClientDaoSupport (clase biblioteca de primavera) tiene método final para el establecimiento de la propiedad requerida que no está anotado con @Autowired o @Resourse
public final void setSqlMapClient(SqlMapClient sqlMapClient) {
if (!this.externalTemplate) {
this.sqlMapClientTemplate.setSqlMapClient(sqlMapClient);
}
}
El bean SqlMapClient se define en spring context.xml. Si frijol UserDAO se define en XML que trabaja muy bien, pero cuando pongo anotación @Repository y retirar la declaración de frijol tengo la siguiente excepción
java.lang.IllegalArgumentException: Property 'sqlMapClient' is required
Una solución puede consistir en añadir nuevo método como
@Aitowired
injectSqlMapClient(SqlMapClient sqlMapClient) {
setSqlMapClient(sqlMapClient);
}
pero parece feo
¿Hay alguna otra forma de inyectar la propiedad sin haberla definido?
Creo que su solución es bastante acertada. – Bozho