Я хотел бы использовать аннотацию @Repository spring, чтобы избежать добавления bean-компонента в context.xml. Я использую интеграцию с ibatis, поэтому мой класс репозитория выглядит следующим образом
@Repository("userDao")
public class UserDaoMybatis extends SqlMapClientDaoSupport implements UserDao {
// ...
}
SqlMapClientDaoSupport (класс библиотеки Spring) имеет окончательный метод для установки необходимого свойства, которое не аннотируется @Autowired или @Resourse
public final void setSqlMapClient(SqlMapClient sqlMapClient) {
if (!this.externalTemplate) {
this.sqlMapClientTemplate.setSqlMapClient(sqlMapClient);
}
}
bean-компонент SqlMapClient определен в spring context.xml . Если bean-компонент userDao определен в XML, он работает нормально, но когда я помещаю аннотацию @Repository и удаляю объявление bean-компонента, я получаю следующее исключение
java.lang.IllegalArgumentException: Property 'sqlMapClient' is required
Временным решением может быть добавление нового метода, такого как
@Aitowired
injectSqlMapClient(SqlMapClient sqlMapClient) {
setSqlMapClient(sqlMapClient);
}
, но он выглядит некрасиво
Is есть ли другой способ ввести свойство без определения?