2016-08-26 3 views
1

Я знаю о процессоре обработки столбцов, и он работает, но я не уверен, как это поможет нам в реальном мире. что должно быть там внутри ниже метод определения в реальном применении это может бытьЧто такое использование BeanPostProcessor в реальном мире весной?

1 Some configuration Code? 
2 Some validation code for bean ? 

общественного класса MyBeanInitProcessor реализует BeanPostProcessor {

@Override 
    public Object postProcessAfterInitialization(Object bean, String beanName) 
      throws BeansException { 
     System.out.println("before initialization: "+beanName); 
     return bean; 
    } 

    @Override 
    public Object postProcessBeforeInitialization(Object bean, String beanName) 
      throws BeansException { 
     System.out.println("after initialization: "+beanName); 
     return bean; 
    } 
} 

ответ

1

В большинстве реальных приложений, вы не будете взаимодействовать с ними непосредственно. Spring provides 28 implementations out of the box, которые выполняют стандартные функции, такие как автоустановка и применение рекомендаций АОП. Вы используете их косвенно, используя стандартные функции Spring, такие как применение аннотаций проверки на параметр метода, который применяет MethodValidationPostProcessor, или совершает вызовы методов @Async, который применяется AsyncAnnotationBeanPostProcessor.

+0

У вас есть такой сценарий, когда вы написали свой почтовый процессор? – CoreThought

+0

@Monica No. Это часть основной инфраструктуры, и мне никогда не нужно было ничего, кроме тех, которые уже включены. То, что я сделал, написано различными правилами, такими как перехватчики AOP или проверки, которые применяются существующими процессорами. – chrylis

+0

спасибо за ваш ответ. это очень ценно для меня. – CoreThought

0

BeanPostProcessor - это средство запуска бит кода каждый раз при инициализации компонента.

  • Допустим, у вас алгоритм обработки в неопределенную количество объектов Заказчика.
  • Скажите, что каждый клиент был компонентом, и (как вы можете найти в LinkedList) каждый bean-компонент мог определить, был ли после него bean-компонент или нет.
  • Скажите далее, что вам нужно создать событие, когда был инициализирован последний компонент в этом списке.

Это можно сделать, если вы добавили код в postProcessAfterInitialization(). Зная весну, есть, конечно, лучшие пути. Тем не менее, для меня это будет случай, когда BeanPostProcessor может быть полезен.

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