Я хотел бы использовать аннотацию @Repository весной, чтобы избежать добавления bean-компонента в context.xml. я использую интеграции Ibatis, поэтому мой репозиторий класса выглядит следующим образомвпрыскивание производного свойства для @Repository bean без @Autowired в суперклассе
@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 определяется в контексте spring.xml. Если userDao боба определяется в XML он работает отлично, но когда я ставлю @Repository аннотацию и удалить объявление боб я получаю следующее исключение
java.lang.IllegalArgumentException: Property 'sqlMapClient' is required
Обходной может быть, чтобы добавить новый метод, как
@Aitowired
injectSqlMapClient(SqlMapClient sqlMapClient) {
setSqlMapClient(sqlMapClient);
}
, но выглядит уродливым
Есть ли какой-либо другой способ, когда вы вводите свойство без определения?
Я думаю, что ваше обходное решение довольно приличное. – Bozho