| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > Spring&Wicket: использование Autowired вне Bean'ов |
| Автор: AJetman 16.8.2009, 18:13 | ||||||||
| Являюсь новичком в Java и J2EE, раньше имел дело с только PHP. Создаю сайт на базе Apache Wicket и решил разобраться с Spring и IoC. В Wicket уже имеется интеграция с Spring, поэтому с этим вопросов нет. Интересует следующее: 1. У меня есть сервис UserDao, реализующий работу с базой данных (через JpaDaoSupport Spring'a). Он объявлен как Bean в файле настроек applicationContext.xml. 2. Для вывода списка пользователей на экран в Wicket предусмотрен компонент DataView. Для DataView необходимо объявить класс, реализующий интерфейс IDataProvider (т.е. DataView генерирует список на основе данных от IDataProvider). Это тоже имеется - назвал UserDataProvider, который обращается к UserDao за необходимой информацией.
В Wicket'e используется так:
3. В файле настроек applicationContext.xml добавил след. строки, чтобы Spring анализировал мой код на аннотации:
При создании нового экземляра UserDataProvider поле userDao не инициализируется Spring'ом. Пока нашел решение, что в Wicket можно в конструкторе UserDataProvider написать так:
Но это, как понимаю, не совсем верное решение... Вопросы: 1. Аннотации Spring работают только для его Bean'ов? 2. Что мне делать с UserDataProvider, чтобы использовать IUserDao без этого инъектора? Возможно, я просто не до конца понял принцип IoC и Spring - поясните, пожалуйста. |
| Автор: AJetman 28.8.2009, 01:03 |
| Видимо это больше вопрос для Springвцев, т.к. как я понял Autowired нельзя применять для свойств обычных классов, а только для Bean'ов, так? |
| Автор: MisterCleric 28.8.2009, 10:19 | ||||||
Можно, если ты его пометишь как @Configurable и объявишь в конфиге как:
и добавишь
Смысл типа заключается в чем: Spring создает динамический прокси для твоего класса и каждый раз при вызове конструктора твоего класса возвращается тебе проинджекшеный прокси. Почитай, попробуй... |