Как назвать метод после того, как бобовая инициализация завершена?

Это чувствует вид подобного макроса C: воспользуйтесь преимуществом, что макрос компилируется не во время определения, а во время использования.

#define CALL_THE_RIGHT_FOO foo()

файл A:

static void foo() {
   // do file A thing
}
...
CALL_THE_RIGHT_FOO
...

файл A:

static void foo() {
   // do file B thing
}
...
CALL_THE_RIGHT_FOO
...

шаблонный шаблон использования, который Вы описываете, позволяет нам, действительно "называют правильное нечто" в родительском шаблоне, откладывая определение того, что точно правильное нечто, пока шаблон не инстанцируют. Кроме этого случая вот в чем разница между ClassA:: нечто и ClassB:: нечто на основе значения T в Родителе.

227
задан BalusC 3 March 2016 в 08:14
поделиться

5 ответов

Вы можете использовать что-то вроде:

<beans>
    <bean id="myBean" class="..." init-method="init"/>
</beans>

Это вызовет метод "init" при создании экземпляра bean-компонента.

196
ответ дан 23 November 2019 в 03:48
поделиться

Для этого вы можете развернуть собственный BeanPostProcessor в контексте вашего приложения. Или, если вы не против реализации интерфейса Spring в вашем компоненте, вы можете использовать интерфейс InitializingBean или директиву «init-method» (та же ссылка).

8
ответ дан 23 November 2019 в 03:48
поделиться

Есть три различных подхода, которые следует учитывать, как описано в справочнике

] Использовать атрибут init-method

Плюсы:

  • Не требует bean-компонента для реализации интерфейса.

Минусы:

  • Нет немедленного указания на то, что этот метод требуется после создания, чтобы гарантировать правильную настройку компонента.

Реализовать InitializingBean

Плюсы:

  • Нет необходимости указывать метод инициализации или включать сканирование компонентов / обработку аннотаций.
  • Подходит для bean-компонентов, поставляемых с библиотекой, где мы не хотим, чтобы приложение, использующее эту библиотеку, заботилось о жизненном цикле bean-компонентов.

Минусы:

  • Более агрессивный подход, чем подход метода инициализации.

Использование JSR-250 @PostConstruct аннотация жизненного цикла

Плюсы:

  • Полезно при использовании сканирования компонентов для автоматического определения bean-компонентов.
  • Дает понять, что для инициализации должен использоваться определенный метод. Намерение ближе к коду.

Минусы:

  • Инициализация больше не определяется централизованно в конфигурации.
  • Не забудьте включить обработку аннотаций (о которой иногда можно забыть).
101
ответ дан 23 November 2019 в 03:48
поделиться

Have you tried implementing InitializingBean? It sounds like exactly what you're after.

The downside is that your bean becomes Spring-aware, but in most applications that's not so bad.

39
ответ дан 23 November 2019 в 03:48
поделиться

Я предполагаю, что происхождение этих терминов восходит к классическому словарному определению сборки: « сборка машинных инструкций для достижения цели», что, вероятно, так пионеры вычислительной техники придумали небольшую группу машинных инструкций. Тогда «ассемблер» - это устройство, которое принимает отдельные машинные инструкции и объединяет их в «сборку».

spring автоматически вызовет метод (при условии, что вы все равно зарегистрируете параметр annotation-config где-то еще в контексте).
304
ответ дан 23 November 2019 в 03:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: