Primavera COI contenedor de grano de ciclo de vida 's es el siguiente :
. ① ejemplar del Bean es creado por el método constructor o de la fábrica: llamar al constructor② para ajustar el valor de la propiedad y otras referencias bean: Call colocadormétodo postProcessBeforeInitialization ③. Bean ejemplo haba pasa al preprocesador④ frijol llama al método initialize :. Init-método⑤. Ejemplo haba pasa al método postProcessAfterInitialization haba postprocesador⑥. Frijol listo para su uso⑦ Cuando el recipiente está cerrado, la destrucción de la llamada al método de la haba :. Destruye-método.
De frijol de inicialización y destrucción métodos
:
nodo de frijol puede
init-método
y el
método de destruir
método para inicializar y configurar el método de destrucción de frijol:
<id = clase de bean "persona" = "com.demo.spring.bean.Person"
init-method = "init" destruir-method = "destruir"
>
<Property name = "nombre" value = "jack"> </ property>
</ Bean>
Nota:
interfaz Método ApplicationContext no es recipiente cerrado, por lo que su uso como un ApplicationContext referencia de interfaz contenedores COI, destruir-método no funcionará cuando se requiera utilizar ApplicationContext subinterface
ConfigurableApplicationContext
.
Haba de post-procesadores detalladas
:
Postprocesador Bean: Frijol Primavera oferta especial
. ① postprocesador haba permite proceso de inicialización de llamada (es decir: después de que el método del atributo nodo bean init-método correspondiente) antes y después del procesamiento adicional Bean.
. ② haba postprocesador uno por uno para todos el recipiente de granos ejemplo COI procesado, en lugar de una única instancia aplicaciones típicas son: Comprobación de corrección propiedad de un Bean o cambio de acuerdo con ciertos criterios de la haba
Propiedad.
③. Postprocesador para Bean, necesidad de implementar la interfaz BeanPostProcessor
public class PersonPostProcessor implementos BeanPostProcessor {/ *** Arg0: ejemplo COI del recipiente de granos* Arg1: contenedor de la COI en el nombre del bean* /@AnularObjeto pública postProcessAfterInitialization (arg0 Object, String arg1) {lanza BeansExceptionsi (arg0 instanceof persona) {System.out.println ( "postProcessAfterInitialization");Persona persona = (Person) arg0;string name = person.getName ();if (! name.equals ( "AAAA")) {System.out.println ( "Valor nombre debe ser BBBB!");person.setName ( "BBBB");}}volver arg0;}@AnularObjeto pública postProcessBeforeInitialization (arg0 Object, String arg1) {lanza BeansExceptionSystem.out.println ( "postProcessBeforeInitialization");volver arg0;}}
④. Necesidad postprocesador haba a ser configurado en un recipiente COI, pero no es necesario especificar la identificación automática del contenedor atributo id primavera IOC que es un postprocesador haba de utilizar automáticamente.
<Clase bean = "com.demo.spring.bean.PersonPostProcessor" / >