2011-12-15 6 views

ответ

114

Практически я не думаю, что есть какая-то разница, но есть приоритеты в том, как они работают. @PostConstruct, init-method - это BeanPostProcessors.

  1. @PostConstruct является JSR-250 аннотации в то время как init-method это путь в Spring иметь метод инициализации.
  2. Если у вас есть метод @PostConstruct, это будет вызываться первым до вызова методов инициализации.
  3. Если ваш bean реализует InitializingBean и переопределяет afterPropertiesSet, то первый @PostConstruct вызывается, затем afterPropertiesSet, а затем init-method.

Для получения дополнительной информации вы можете проверить Весна reference documentation.

+18

Если фасоль используется более чем один из этих методов, опираясь на порядок инициализации, это будет ужасно сложным и неосновательный. –

+2

@Donal Совершенно верно. Просто предоставлял информацию о том, как это работает. –

+1

Существует важная разница: вам нужно специально настроить Spring для обработки аннотаций, чтобы сделать работу @PostConstruct: http://stackoverflow.com/q/3434377/134898 –

18

Нет никакой реальной разницы. Это зависит от того, как вы предпочитаете настраивать свою систему, и это вопрос личного выбора. Сам я предпочитаю использовать @PostConstruct аннотации для своего собственного кода (так как компонент только правильно настроен после вызова метода), и я использую init-method при создании экземпляров bean-компонентов из библиотек, не поддерживающих Spring (не могут применяться аннотации там, конечно !), но я могу полностью понять людей, желающих сделать все так или иначе.

4

@postconstruct не является частью весны. Это часть пакета javax. Оба они одинаковы. используя init-метод, нам нужно добавить в xml-файл. Если вы используете добавление @postconstruct в xml, не требуется. Ознакомьтесь с приведенной ниже статьей.

http://answersz.com/spring-postconstruct-and-predestroy/

+0

Можете ли вы показать соответствующие части статьи? – segarci

Смежные вопросы