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