머리말
이전 기사는 주로 Bean의 구성, 주입 및 사용자 정의 속성 편집기에 대해 배웠습니다. 오늘은 콩의 수명주기에 익숙해 봅시다.
모든 것은 자체 수명주기, 시작, 수명의 끝이 있습니다. 당신이 가장 친숙한 것은 서블릿의 수명주기입니다. 서블릿과 마찬가지로 스프링 콩에는 자체 수명주기가 있습니다.
수명주기는 개발에서 매우 일반적인 명사이며 기본적으로 모든 프로그래밍 언어는 이와 관련된 것을 찾을 수 있습니다. 나는 또한 온라인에서 많은 Bean Life Cycles를 찾았으며 기본적으로 동일합니다. 여기서는 주로 코드를 통해 확인하고 싶습니다. 결국, 내가 배운 지식은 동일하고, Java를 배웠으며, 가장 중요한 것은 실습을 연습하여 더 많이 기억할 수 있도록하는 것입니다.
아래는 수명주기에 대한 설명으로 데모를 통해 확인합니다.
다음 그림은 실행 된 순서를 보여줍니다.
1. LiftCycle 클래스 만들기 5 가지 인터페이스 방법을 구현하려면 BeanFactoryAware, Beannameaware, 초기화 비, 일회용 비안, ApplicationContextAware
패키지 cuiyw.spring.service; import org.springframework.beans.beansexception; import org.springframework.beans.beans.bean.beanfactory; import org.springframework.beans.beantory.beantory.beantory org.springframework.beans.bean aftory.beannameaware; org.springframework.bean.beans.disposablebean; import org.springframework.beans.factory.initializingbean; import org.spramframework.context.applicationcontext; import org.springframework.context.applicationContextAware; public classeccy ccle Implements BeanFactoryAware, Beannameaware, 초기화 비, 일회용 비안, ApplicationContextAware {개인 문자열 이름; public String getName () {System.out.println ( "getName name ="+name); 반환 이름; } public void setName (문자열 이름) {System.out.println ( "setName name ="+name); this.name = 이름; } public void afterProperTiesset ()는 예외를 던져 {// todo auto-auto-recenrated method system.out.println ( "초기화 bean.fterproperTiesset ()"); } public void setbeanname (String arg0) {// todo 자동 생성 메소드 스터브 시스템.out.println ( "beannameaware.setbeanname"); } public void setBeanFactory (beanfactory arg0)는 beansexception {// todo auto-auto-recenated method system.out.println ( "beanfactoryaware.setbeanfactory"); } public void destroy ()는 예외를 던져 {// todo 자동 생성 메소드 스터브 시스템.out.println ( "prisposablebean.destroy"); } public void myInit () {System.out.println ( "【init-method】 <eanb>의 초기화 속성에 의해 지정된 초기화 방법을 호출); } public void myDestory () {system.out.println ( "【Destroy-method】 <eanb>의 파괴 메드 속성에 의해 지정된 초기화 방법을 호출); } public void setApplicationContext (ApplicationContext Arg0)는 beansexception {// todo auto-auto-regenated method system.out.println ( "ApplicationContextAware.setApplicationContext"); }}2. InstantiationAwareBeanPostProcessor 인터페이스를 등록하십시오
패키지 cuiyw.spring.service; import java.beans.propertydescriptor; import org.springframework.beans.beansexception; import org.springframework.beans.properteyvalues; import org.springframework.beans.config.instantiationbeanposcessor; MyInstantiationAwareBeanPostprocessor는 InstantiationAwareBeanPostProcessor {public Object PostProcessAfterinitialization (Object Bean, String Beanname)을 구현합니다. Beansexception {// todo 자동 생성 메소드 Stub System.out.println ( "InstantiationAwarebeanProcessor.postprocessafterafcessafterinitialization"); 귀환 콩; } public Object postprocessbeforeinitialization (Object Bean, String Beaname)은 beansexception을 던졌습니다. 귀환 콩; } public boolean postprocessafterinstantiation (객체 Bean, String beaname)은 beansexception을 던졌습니다. 진실을 반환하십시오. } public Object postprocessbeforeinstantiation (class <?> beanclass, String beaname)은 beansexception을 던졌습니다. 널 리턴; } public propertyValues postprocesspropertyvalues (propertyValues pvs, propertyDescriptor [] pds, object bean, string beaname)는 beansexception {// todo auto-auto-kened method stub system.out.println ( "instantiationAwarebeanpostprocessor.postprocesspropervalues"); 반환 PV; }}3. BeanPostProcessor 인터페이스를 등록하십시오
실제로 InstantiationAwareBeanPostProcessor는 BeanPostProcessor를 상속 받으므로 위의 BeanPostProcessor 인터페이스의 메소드도 구현했습니다.
패키지 cuiyw.spring.service; import org.springframework.beans.beansexception; import org.springframework.beans.config.config.beanpostprocessor; public class mybeanpostprocessor empropostprocessor {object bean eprocessecece indebeancescecection (string beanne). todo 자동 생성 메소드 스텁 시스템 .out.println ( "BeanPostProcessor.postProcessAfterinitialization"); 귀환 콩; } public Object postprocessbeforeinitialization (Object Bean, String Beanname)은 beansexception을 던졌습니다. 귀환 콩; }}4. BeanFactoryPostProcessor 인터페이스를 등록하십시오
패키지 cuiyw.spring.service; import org.springframework.beans.beansexception; import org.springframework.beans.bean.bean.config.beanfactorypostprocessor; import org.springframepramework.beans.beans.beans.beans.beans.beans.config.configerbestableantableanfactory; beanfactorypostprocessor {public void postprocessbeanfactory (configurablelistablebeanfactory arg0)는 beansexception {// todo auto-auto-renerated method system.out.println ( "beanfactorypostprocessor.postprocessbeanfactory"); }}5. 컨텍스트에서 구성
이전 블로그의 데모를 기반으로 수정하겠습니다. 다른 간섭을하려면 먼저 서비스를 제거합니다.
<? xml 버전 = "1.0"alcoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans"xmlns : xsi = "http://ww.w.w3.org/2001/xmlschema-instance" xsi : schemalocation = "http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beansd"> <bean id = "beanpostprocessor"> <bean id = "InstantiationAwareBeanPostProcessor"> </bean> <bean id = "beanfactorypostprocessor"> </bean> <bean id = "lifecycle"init-method = "myinit"destroy-method = "myDestory"> <property name = "name"value = "cuiyw1"> </bean> </bean>
6. 메인에서 콩을 사용하십시오
패키지 cuiyw.springaop; import org.springframework.beans.beans.beanfactory; import org.springframework.context.applicationcontext; import org.springframework.context.support.classpathxmlapplicationcontext; import.iservice.iservice cuiyw.spring.service.lifecycle; public class app {public static void main (String [] args) {ApplicationContext context = new ClassPathXmlApplicationContext (새 String [] { "ApplicationContext.xml"}); Beanfactory Factory = 컨텍스트; Lifecycle Lifecycle = 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. 인쇄 결과를 입력하십시오
출력 순서는 기본적으로 위 그림의 순서와 동일하다는 것을 알 수 있습니다.
요약
위는이 기사의 전체 내용입니다. 이 기사의 내용에 모든 사람의 연구 나 작업에 대한 특정 참조 가치가 있기를 바랍니다. 궁금한 점이 있으면 의사 소통을 위해 메시지를 남길 수 있습니다. Wulin.com을 지원 해주셔서 감사합니다.