Prefácio
O artigo anterior aprendeu principalmente sobre a configuração, injeção e editor de propriedades personalizadas do Beans. Hoje, vamos nos familiarizar com o ciclo de vida dos feijões.
Qualquer coisa tem seu próprio ciclo de vida, o começo, o fim da vida. O que você mais está familiarizado é o ciclo de vida dos servlets. Como servlets, os feijões de primavera também têm seu próprio ciclo de vida.
O ciclo de vida é um substantivo muito comum no desenvolvimento e, basicamente, toda linguagem de programação pode encontrá -la associada a ele. Eu também procurei muitos ciclos de vida de feijão on -line e eles são basicamente os mesmos. Aqui eu quero principalmente verificar através do código. Afinal, o conhecimento que aprendi é o mesmo, aprendi Java, e o mais importante é praticar prática, para que eu possa me lembrar mais.
Abaixo está uma descrição de seu ciclo de vida, que verificamos através da demonstração.
A figura a seguir mostra a ordem em que é executada.
1. Crie aula de ciclo de elevação para implementar 5 métodos de interface: BeanFactoryAware, Beannameaware, InicializandoBean, DisposableBean, ApplicationContextAware
pacote cuiyw.spring.service; importar org.springframework.beans.beansception; importar org.springframework.beans.Factory.BeanFactory; import org.springframework.beans.Factory.BeanFactoryeean; importarean; org.springframework.beans.factory.disposableBean; importar org.springframework.beans.factory.initializandoBean; importação org.springframework.context.applicationContext; publicouttle.springframework.context.AppLiClationConteCarare; BeanFactoryAware, Beannameaware, InicializandoBean, DisposableBean, ApplicationContexTAWe {private String Name; public String getName () {System.out.println ("getName name ="+nome); Nome de retorno; } public void setName (nome da string) {System.out.println ("setName name ="+nome); this.name = nome; } public void depoisPropertiESSET () lança exceção {// TODO Method Auto-Gerated Method System.out.println ("InitializingBean.AfterPropertiESSET ()"); } public void setBeanName (String arg0) {// TODO Method Auto-Gerated Stub System.out.println ("BeanNameaware.SetBeanName"); } public void setBeanFactory (BeanFactory Arg0) lança beansexception {// TODO GONEGERATO DE AUTO-GENERATO SISTEM.OUT.println ("BeanFactoryAWare.setBeanFactory"); } public void Destroy () lança Exceção {// TODO Método GOERADO AUTOMENTADO SOTEM SYSTEM.OUT.println ("DisposableBean.Destroy"); } public void myinit () {System.out.println ("【init-method】 chamando o método de inicialização especificado pela propriedade init-method de <ean>"); } public void myDestory () {System.out.println ("【Destruir-method】 chamando o método de inicialização especificado pela propriedade Destroy-Method de <ean>"); } public void setApplicationContext (ApplicationContext arg0) lança Beansexception {// TODO Método Auto-Gerado Stub System.out.println ("ApplicationContexTAWare.SetapplicationContext"); }}2. Registre a interface InstantiationAWareBeanPostProcessor
pacote cuiyw.spring.service; importar java.beans.propertyDescriptor; importação org.springframework.beans.beansception; importação org.springframework.beans.propertyValues; importeWeBeareBeareBeareBeReBeareBeareBeareBeareBeareBeareBeareBeareBeReStincieReBeareBeReStincieReBeareBearsPringArc.EstrocoryPertyBeaStintura MyInstantiationAWareBeanPostProcessor implementa instantaiçãoeeBeanPostProcessor {public Object Postprocessafterinitialization (Bean, Bean, string beanname) lança beansexception {// togo-gonerated method system.out.println ("InstantAção Retornar Bean; } Public Object PostprocessBeforeinitialization (objeto Bean, String Beanname) lança Beansexception {// TODO Method Method Stub System.out.println ("InstanciaçãoeBeaBeanPostProcessor.PostprocessBeinitialization Retornar Bean; } public boolean PostprocessafterInstiation (objeto Bean, String Beanname) lança beansexception {// TODO Method Auto-Generated Stub System.out.println ("InstantionAcheareBeanPostProcessor.PostProcesAfterInstIationation"); retornar true; } Public Object PostprocessBeforeInstiation (classe <?> BeansClass, String beanname) lança beansexception {// TODO Method Auto-Generated Stub System.out.println ("InstantiationAwareBeanPostprocessor.PostProcesBeInseInStiation"); retornar nulo; } Propriedade pública PostprocessPropertyValues (PropertyValues Pvs, PropertyDescriptor [] PDS, Object Bean, String Beanname) lança Beansexception {// TODO Método Auto-Gerado Sistema System.out.println ("InstantationseareBeanPostProcessor.PostPessProcessProcessPratyUsPratyues; retornar PVs; }}3. Registre a interface do beanPostProcessor
De fato, o instanciação doseBeanPostProcessor herda o BEANPOSTPROCESSOR, então também implementei o método da interface BeanPostProcessor acima.
package Cuiyw.Spring.Service;import org.springframework.beans.BeansException;import org.springframework.beans.factory.config.BeanPostProcessor;public class MyBeanPostProcessor implements BeanPostProcessor { public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {// TODO Method Auto-Gerated Stub System.out.println ("beanpostprocessor.postprocessafterinitialization"); Retornar Bean; } Public Object PostprocessBeforeinitialization (objeto Bean, String Beanname) lança Beansexception {// TODO Method Method Stub System.out.println ("BeanPostProcessor.PostprocessForeinitialization"); Retornar Bean; }}4. Registre a interface BeanFactoryPostProcessor
package Cuiyw.Spring.Service;import org.springframework.beans.BeansException;import org.springframework.beans.factory.config.BeanFactoryPostProcessor;import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;public class MyBeanFactoryPostProcessor implements BeanFactoryPostProcessor {public void PostprocessBeanFactory (ConfigurableListableBeanFactory Arg0) lança beansexception {// TODO Método Auto-Gerado System.out.println ("BeanFactoryPostprocessor.PostprocessBeanFactory"); }}5. Configure no contexto
Vou modificá -lo com base na demonstração do blog anterior. Para ter outra interferência, removerei o serviço primeiro.
<? xml versão = "1.0" coding = "utf-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http:/wwww.w3 xsi: schemalocation = "http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd" Bean id = "BeanPosting id = "InstantiationAWareBeanPostProcessor"> </i bean> <bean id = "beanFactoryPostProcessor"> </shean> <bean id = "lifecycle" init-method = "myinit" Destroy-method = "myDestory"> <nome da propriedade = "name" = "biyww1"> </myDestory "> <nome da propriedade =" name "=" biyw1 ">">
6. Use feijão em principal
pacote cuiyw.springaop; importar org.springframework.beans.factory.beanfactory; importar org.springframework.context.applicationContext; importar org.springframework.context.support.classpathmlApglicationConteCeat; Cuiyw.spring.service.lifeCycle; public class App {public static void main (string [] args) {ApplicationContext context = new ClassPathXMLApplicationContext (new String [] {"ApplicationContext.xml"}); Fábrica de beanfactory = contexto; Ciclo de vida do ciclo de vida = Factory.getBean ("Lifecycle", Lifecycle.class); LifeCycle.SetName ("Cuiyw2"); System.out.println ("lifecycle.name ="+lifecycle.getName ()); ((ClassPathXMLApplicationContext) Factory) .RegisterShutDownHook (); /*Service=(ISERVICE)Factory.getBean("servicea "); Service.Service ("Cuiyw Servicea"); Service = (ISERVICE) Factory.getBean ("ServiceImpl"); Service.Service ("Cuiyw ServiceImpl"); */}}7. Digite o resultado da impressão
Pode -se descobrir que a ordem da saída é basicamente a mesma da ordem da figura acima.
Resumir
O acima é o conteúdo inteiro deste artigo. Espero que o conteúdo deste artigo tenha certo valor de referência para o estudo ou trabalho de todos. Se você tiver alguma dúvida, pode deixar uma mensagem para se comunicar. Obrigado pelo seu apoio ao wulin.com.