Предисловие
Предыдущая статья в основном узнала о конфигурации, инъекции и пользовательском редакторе свойств бобов. Сегодня давайте ознакомимся с жизненным циклом бобов.
У любой вещи есть свой жизненный цикл, начало, конец жизни. То, с чем вы больше всего знакомы, это жизненный цикл сервлетов. Как и сервлеты, весенние бобы также имеют свой жизненный цикл.
Жизненный цикл является очень распространенным существительным в разработке, и в основном каждый язык программирования может найти его связанным. Я также искал много жизненных циклов бобов в Интернете, и они в основном одинаковы. Здесь я в основном хочу проверить через код. В конце концов, знания, которые я узнал, одинаковы, я выучил Java, и самое главное-практиковать практические, чтобы я мог вспомнить это больше.
Ниже приведено описание его жизненного цикла, которое мы проверяем через демонстрацию.
На следующем рисунке показан порядок, в котором он выполнен.
1. Создайте класс LiftCycle для реализации 5 методов интерфейса: BeanFactoryAware, Beannameaware, инициализация, одноразовый, issablebean, ApplicationContextaware
Пакет cuiyw.spring.service; import org.springframework.beans.beansexception; import org.springframework.beans.factory.beanfactory; импорт org.springframework.beans.factory.beanfactoryaware; импорт org.spramework.beans.factory.beannameaware; org.springframework.beans.factory.disposablebean; import org.springframework.beans.factory.initializebean; импорт org.springframework.context.applicationContext / BeanFactoryAware, Beannameaware, инициализация, одноразовый, приложение, приложение Contextaware {Private String name; public String getName () {System.out.println ("getName name ="+name); вернуть имя; } public void setName (string name) {System.out.println ("setName name ="+name); this.name = name; } public void AfterProperTiesset () Throws Exception {// TODO Auto Genegened Method System.out.println ("Инициализация bean.afterpropertiesset ()"); } public void setBeanName (String arg0) {// todo автоматическое сгенерированное метод System.out.println ("beannameaware.setbeanname"); } public void setbeanFactory (beanfactory arg0) бросает Beansexception {// todo, сгенерированный автоматическим методом System.out.println ("beanfactoryaware.setbeanfactory"); } public void destress () бросает исключение {// todo автоматическое сгенерированное метод System.out.println ("issoblebean.destroy"); } public void myInit () {System.out.println ("【init-method】 Вызов метода инициализации, указанный в свойстве инициации Method <Bean>"); } public void myDestory () {System.out.println ("【Dissult-Method】 Призыв метод инициализации, указанный в свойстве Dressustmethod <Bean>"); } public void setApplicationContext (ApplicationContext arg0) throws beansexception {// todo сгенерированный метод STUB System.out.println ("ApplicationContextAware.SetApplicationContext"); }}2. Зарегистрируйте интерфейс instantiationawarebeanpostprocessor
Пакет cuiyw.spring.service; import java.beans.propertydescriptor; import org.springframework.beans.beansexception; импорт org.springframework.beans.propertyvalues; import.springframework.beansfactory.beans.instantia Myinstantiationawarebeanpostprocessor реализует instantiationawarebeanpostprocessor {public Object postprocessafterinitialization (Object Bean, String Beanname) Throws Beansexception {// Todo AutoGencestpostprocessAftriationFaterSailSptriTiationFaterSafterPaterInitialIniationFaterSafterSptriTiationFaterSafterSpterSpterSpterSpterSpterSpterSpterSpterSpterSpterSpterSpterSpterSpterSpterSpterSpterSpterS.Out.PrintLn ("// toDo. вернуть бон; } public Object postprocessbeforeinialization (Object Bean, String Beanname) Throws Beansexception {// todo автоматическое сгенерированное метод системы. вернуть бон; } public boolean postprocessafterinstantiation (объект Bean, String Beanname) Throws Beansexception {// todo Автоматическая сгенерированная система. вернуть истину; } public Object postprocessbeforeinstantiation (class <?> Beanclass, String Beanname) Throws Beansexception {// todo Автогенерированный метод System.out.println ("instantiationawarebeanpostprocessor.postprocessbeforeinstaniation"); вернуть ноль; } public PropertyValues postProcessPropertyValues(PropertyValues pvs, PropertyDescriptor[] pds, Object bean, String beanName) throws BeansException { // TODO Auto-generated method stub System.out.println("InstantiationAwareBeanPostProcessor.postProcessPropertyValues"); вернуть PVS; }}3. Зарегистрируйте интерфейс BeanpostProcessor
Фактически, instantiationawarebeanpostprocessor наследует Beanpostprocessor, поэтому я также реализовал метод интерфейса Beanpostprocessor выше.
Пакет cuiyw.spring.service; import org.springframework.beans.beansexception; import org.springframework.beans.factory.config.beanpostprocessor; открытый класс mybeanpostprocessor внедряет Beanpostprocessor {public ObjectSafterinialization (объект BeanmeScesse) // TODO Автогенерированный метод STUB System.out.println ("beanpostprocessor.postprocessafterinitialization"); вернуть бон; } public Object postprocessbeforeinialization (Object Bean, String Beanname) Throws Beansexception {// TODO Auto Generated Method System.out.println ("beanpostprocessor.postprocessbeforeinialization"); вернуть бон; }}4. Зарегистрируйте интерфейс BeanFactoryPostProcessor
пакет cuiyw.spring.service; import org.springframework.beans.beansexception; import org.springframework.beans.factory.config.beanfactorypostprocessor; import org.springframework.beans.factory.configconfigurablististablebeanfactory; BeanFactoryPostProcessor {public void posteProcessBeanfactory (ConfiguRableListableBeanFactory arg0) бросает BeanSexception {// todo автоматическое метод STUB System.out.println ("BeanFactoryPostProcessor.postprocessbeanfactory"); }}5. Настройка в контексте
Я изменю его на основе демонстрации предыдущего блога. Чтобы иметь другие помехи, сначала я удалю сервис.
<? xml version = "1.0" Encoding = "UTF-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id = "beanpostprocessor"> </bean> <bean id = "instantiationawarebeanpostprocessor"> </bean> <bean id = "beanfactorypostprocessor"> </bean> <bean id = "lifecycle" init-method = "myinit" destry-method = "myStory"> <свойство = "name" value = "cuiyw1"> </bean> </bean> </bean> </bean> </bean> </bean> </bean> </bean> </bean> </bean> </bean> </bean> </bean> </bean> </bean> </bean> </bean.
6. Используйте бобы в основном
Пакет cuiyw.springaop; import org.springframework.beans.factory.beanfactory; import org.springframework.context.applicationContext; импорт org.springframework.context.support.classpathxmlacycontext; importyyw.spring.iservice.iservice.iservice.iservice.iservice.iservice.iservice.iservice.iservice.iservice.iservice.iservice.iservice.iservice.iservice.iservice. Cuiyw.spring.service.lifecycle; public class app {public static void main (string [] args) {ApplicationContext context = new ClassPathxMlapplicationContext (new 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=(Service) factory.getBean("servicea "); Service.service ("cuiyw servicea"); Service = (iService) factory.getBean ("ServiceImpl"); Service.service ("cuiyw serviceImpl"); */}}7. Введите результат печати
Можно обнаружить, что порядок вывода в основном такой же, как и порядок рисунка выше.
Суммировать
Вышеуказанное - все содержание этой статьи. Я надеюсь, что содержание этой статьи имеет определенную справочную ценность для каждого обучения или работы. Если у вас есть какие -либо вопросы, вы можете оставить сообщение для общения. Спасибо за поддержку Wulin.com.