简述企业网站建设的流程如何使用wordpress自定义主题
2026/2/15 7:17:47 网站建设 项目流程
简述企业网站建设的流程,如何使用wordpress自定义主题,搜索引擎优化策略有哪些,做铝板的网站什么是Bean的生命周期 Spring其实就是一个管理Bean对象的工厂。它负责对象的创建#xff0c;对象的销毁等。 所谓的生命周期就是#xff1a;对象从创建开始到最终销毁的整个过程。 什么时候创建Bean对象#xff1f; 创建Bean对象的前后会调用什么方法#xff1f; Bean对象什…什么是Bean的生命周期Spring其实就是一个管理Bean对象的工厂。它负责对象的创建对象的销毁等。所谓的生命周期就是对象从创建开始到最终销毁的整个过程。什么时候创建Bean对象创建Bean对象的前后会调用什么方法Bean对象什么时候销毁Bean对象的销毁前后调用什么方法为什么要知道Bean的生命周期其实生命周期的本质是在哪个时间节点上调用了哪个类的哪个方法。我们需要充分的了解在这个生命线上都有哪些特殊的时间节点。只有我们知道了特殊的时间节点都在哪到时我们才可以确定代码写到哪。我们可能需要在某个特殊的时间点上执行一段特定的代码这段代码就可以放到这个节点上。当生命线走到这里的时候自然会被调用。Bean的生命周期之5步(简略版生命周期必须掌握)相比5步多出来的是哪2步在初始化Bean的前和后Bean生命周期的管理可以参考Spring的源码AbstractAutowireCapableBeanFactory类的doCreateBean()方法。Bean生命周期可以粗略的划分为五大步第一步创建Bean第二步Bean属性赋值第三步初始化Bean第四步使用Bean第五步销毁Bean编写测试程序定义一个Beanpackagecom.powernode.spring6.bean;/** * author 动力节点 * version 1.0 * className User * since 1.0 **/publicclassUser{privateStringname;publicUser(){System.out.println(1.实例化Bean);}publicvoidsetName(Stringname){this.namename;System.out.println(2.Bean属性赋值);}publicvoidinitBean(){System.out.println(3.初始化Bean);}publicvoiddestroyBean(){System.out.println(5.销毁Bean);}}?xml version1.0 encodingUTF-8?beansxmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd!-- init-method属性指定初始化方法。 destroy-method属性指定销毁方法。 --beaniduserBeanclasscom.powernode.spring6.bean.Userinit-methodinitBeandestroy-methoddestroyBeanpropertynamenamevaluezhangsan//bean/beanspackagecom.powernode.spring6.test;importcom.powernode.spring6.bean.User;importorg.junit.Test;importorg.springframework.context.ApplicationContext;importorg.springframework.context.support.ClassPathXmlApplicationContext;/** * author 动力节点 * version 1.0 * className BeanLifecycleTest * since 1.0 **/publicclassBeanLifecycleTest{TestpublicvoidtestLifecycle(){ApplicationContextapplicationContextnewClassPathXmlApplicationContext(spring.xml);UseruserBeanapplicationContext.getBean(userBean,User.class);System.out.println(4.使用Bean);// 只有正常关闭spring容器才会执行销毁方法ClassPathXmlApplicationContextcontext(ClassPathXmlApplicationContext)applicationContext;context.close();}}需要注意的第一只有正常关闭spring容器bean的销毁方法才会被调用。第二ClassPathXmlApplicationContext类才有close()方法。第三配置文件中的init-method指定初始化方法。destroy-method指定销毁方法。8.4 Bean生命周期之7步在以上的5步中第3步是初始化Bean如果你还想在初始化前和初始化后添加代码可以加入“Bean后处理器”。编写一个类实现BeanPostProcessor类并且重写before和after方法packagecom.powernode.spring6.bean;importorg.springframework.beans.BeansException;importorg.springframework.beans.factory.config.BeanPostProcessor;/** * author 动力节点 * version 1.0 * className LogBeanPostProcessor * since 1.0 **/publicclassLogBeanPostProcessorimplementsBeanPostProcessor{OverridepublicObjectpostProcessBeforeInitialization(Objectbean,StringbeanName)throwsBeansException{System.out.println(Bean后处理器的before方法执行即将开始初始化);returnbean;}OverridepublicObjectpostProcessAfterInitialization(Objectbean,StringbeanName)throwsBeansException{System.out.println(Bean后处理器的after方法执行已完成初始化);returnbean;}}在spring.xml文件中配置“Bean后处理器”!--配置Bean后处理器。这个后处理器将作用于当前配置文件中所有的bean。--beanclasscom.powernode.spring6.bean.LogBeanPostProcessor/一定要注意在spring.xml文件中配置的Bean后处理器将作用于当前配置文件中所有的Bean。执行测试程序如果加上Bean后处理器的话Bean的生命周期就是7步了。Bean生命周期之10步十分详细生命周期尽量掌握如果根据源码跟踪可以划分更细粒度的步骤10步相比7步多出来的是哪三步点位1在Bean后处理器before方法之前点位2在Bean后处理器before方法之后点位3使用Bean后或者说销毁Bean之前添加的这三个点位的特点都是在检查你这个Bean是否实现了某些特定的接口如果实现了这些接口则spring容器会调用这个接口中的方法它们干了什么点位1检查Bean是否实现了Aware的相关接口Aware相关的接口包括BeanNameAware、BeanClassLoaderAware、BeanFactoryAware当Bean实现了BeanNameAwareSpring会将Bean的名字传递给Bean。当Bean实现了BeanClassLoaderAwareSpring会将加载该Bean的类加载器传递给Bean。当Bean实现了BeanFactoryAwareSpring会将Bean工厂对象传递给Bean。点位2检查Bean是否实现了InitializingBean如果实现了则调用接口的方法点位3检查Bean是否实现了DisposableBean如果实现了则调用接口的方法测试以上10步可以让User类实现5个接口并实现所有方法BeanNameAwareBeanClassLoaderAwareBeanFactoryAwareInitializingBeanDisposableBean代码如下packagecom.powernode.spring6.bean;importorg.springframework.beans.BeansException;importorg.springframework.beans.factory.*;/** * author 动力节点 * version 1.0 * className User * since 1.0 **/publicclassUserimplementsBeanNameAware,BeanClassLoaderAware,BeanFactoryAware,InitializingBean,DisposableBean{privateStringname;publicUser(){System.out.println(1.实例化Bean);}publicvoidsetName(Stringname){this.namename;System.out.println(2.Bean属性赋值);}publicvoidinitBean(){System.out.println(6.初始化Bean);}publicvoiddestroyBean(){System.out.println(10.销毁Bean);}OverridepublicvoidsetBeanClassLoader(ClassLoaderclassLoader){System.out.println(3.类加载器classLoader);}OverridepublicvoidsetBeanFactory(BeanFactorybeanFactory)throwsBeansException{System.out.println(3.Bean工厂beanFactory);}OverridepublicvoidsetBeanName(Stringname){System.out.println(3.bean名字name);}Overridepublicvoiddestroy()throwsException{System.out.println(9.DisposableBean destroy);}OverridepublicvoidafterPropertiesSet()throwsException{System.out.println(5.afterPropertiesSet执行);}}packagecom.powernode.spring6.bean;importorg.springframework.beans.BeansException;importorg.springframework.beans.factory.config.BeanPostProcessor;/** * author 动力节点 * version 1.0 * className LogBeanPostProcessor * since 1.0 **/publicclassLogBeanPostProcessorimplementsBeanPostProcessor{OverridepublicObjectpostProcessBeforeInitialization(Objectbean,StringbeanName)throwsBeansException{System.out.println(4.Bean后处理器的before方法执行即将开始初始化);returnbean;}OverridepublicObjectpostProcessAfterInitialization(Objectbean,StringbeanName)throwsBeansException{System.out.println(7.Bean后处理器的after方法执行已完成初始化);returnbean;}}通过测试可以看出来InitializingBean的方法早于init-method的执行。DisposableBean的方法早于destroy-method的执行。对于SpringBean的生命周期掌握之前的7步即可。够用。Bean的作用域不同管理方式不同Spring 根据Bean的作用域来选择管理方式。对于singleton作用域的BeanSpring 能够精确地知道该Bean何时被创建何时初始化完成以及何时被销毁所以spring可以对它进行完整的生命周期的管理而对于 prototype 作用域的 BeanSpring 只负责创建当容器创建了 Bean 的实例后Bean 的实例就交给客户端代码管理Spring 容器将不再跟踪其生命周期。我们把之前User类的spring.xml文件中的配置scope设置为prototype?xml version1.0 encodingUTF-8?beansxmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd!-- init-method属性指定初始化方法。 destroy-method属性指定销毁方法。 --beaniduserBeanclasscom.powernode.spring6.bean.Userinit-methodinitBeandestroy-methoddestroyBeanscopeprototypepropertynamenamevaluezhangsan//bean!--配置Bean后处理器。这个后处理器将作用于当前配置文件中所有的bean。--beanclasscom.powernode.spring6.bean.LogBeanPostProcessor//beans通过测试一目了然。只执行了前8步到交给客户端使用后就不管理了第9和10都没有执行即检查接口和销毁Bean它都不管了自己new的对象如何让Spring管理有些时候可能会遇到这样的需求某个java对象是我们自己new的然后我们希望这个对象被Spring容器管理怎么实现packagecom.powernode.spring6.bean;/** * author 动力节点 * version 1.0 * className User * since 1.0 **/publicclassUser{}packagecom.powernode.spring6.test;importcom.powernode.spring6.bean.User;importorg.junit.Test;importorg.springframework.beans.factory.support.DefaultListableBeanFactory;/** * author 动力节点 * version 1.0 * className RegisterBeanTest * since 1.0 **/publicclassRegisterBeanTest{TestpublicvoidtestBeanRegister(){// 自己new的对象UserusernewUser();System.out.println(user);// 创建 默认可列表BeanFactory 对象DefaultListableBeanFactoryfactorynewDefaultListableBeanFactory();// 注册Beanfactory.registerSingleton(userBean,user);// 从spring容器中获取beanUseruserBeanfactory.getBean(userBean,User.class);System.out.println(userBean);}}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询