ApplicationContext.xml выполнение бина - как? - PullRequest
0 голосов
/ 11 февраля 2012

У меня applicationContext.xml, который содержит нижнюю строку:

<bean id="myclass" class="com.abc.myclassinfo" >
</bean>

И, myclassinfo.java имеет следующий код:

public class myclassinfo {
   public myclassinfo() {
       // Here I'm initializing Jersey client
   }
}

Теперь, что происходит, когда пружина загружает applicationContext.xml? Вызывает ли это конструктор?

Кроме того, если я хочу инициализировать клиент Джерси каким-либо другим способом без applicationContext.xml, как мне это сделать?

Спасибо!

Ответы [ 3 ]

1 голос
/ 11 февраля 2012
  • Во-первых, он вызывает конструктор (по умолчанию без аргументов, или другой, если он аннотирован)
  • Тогда он вызывает @PostConstruct / init-method
  • Затем он вызывает постпроцессоры, которые могут еще больше манипулировать объектом

Если вы хотите использовать класс вне Spring, вы просто создаете его экземпляр (используя конструктор) и вручную вызываете метод init (если таковой существует). Обратите внимание, что вы теряете автоматические прокси, которые пружина создает вокруг ваших объектов для транзакций, планирования, кэширования и т. Д.

0 голосов
/ 11 февраля 2012

Похоже, что запись в журнале довольно быстро прояснила бы первый вопрос.

Ваш второй вопрос мне не совсем понятен. Вы можете использовать аннотации и пропустить хотя бы большинство XML. Однако я не знаю, что клиентское приложение на Джерси сильно зависит от Spring.

Если вы хотите использовать Spring без конфигурационного файла и без аннотаций, вы можете создать контекст программно, хотя я не уверен, почему вы захотите это сделать, кроме как для тестирования. Даже тогда легче расширить существующий контекст, IMO.

0 голосов
/ 11 февраля 2012

Попробуйте использовать init-method или @Postconstruct аннотацию для инициации некоторой логики.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...