当前位置: 首页 > news >正文

长沙做网站好的公司有哪些seo网站推广优化就找微源优化

长沙做网站好的公司有哪些,seo网站推广优化就找微源优化,网站优化流程,打开网站是空白页面目录 基本的生命周期后处理器总结 基本的生命周期 为了演示生命周期的过程,我们直接使用 SpringApplication.run()方法,他会直接诶返回一个容器对象。 import org.springframework.boot.SpringApplication; import org.springframework.context.Config…

目录

  • 基本的生命周期
  • 后处理器
  • 总结

基本的生命周期

为了演示生命周期的过程,我们直接使用 SpringApplication.run()方法,他会直接诶返回一个容器对象。

import org.springframework.boot.SpringApplication;
import org.springframework.context.ConfigurableApplicationContext;@SpringBootApplication
public class BeanLifecycleTest {public static void main(String[] args) {ConfigurableApplicationContext context = SpringApplication.run(BeanLifecycleTest.class, args);context.close();}
}

然后定义一个Bean,如下:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;@Component
public class LifeCycleBean {public LifeCycleBean() {System.out.println("构造方法");}/*** 依赖注入方法* 当参数是一个对象时,可以直接注入* 但是如果是String类型,则需要使用@Value,找到环境变量JAVA_HOME** @param home*/@Autowiredpublic void autowired(@Value("${JAVA_HOME}") String home) {System.out.println("依赖注入");}/***  @PostConstruct 用来标记 bean 初始化完成后的回调方法*/@PostConstructpublic void init() {System.out.println("初始化");}/*** @PreDestroy 用来标记 bean 销毁前的回调方法*/@PreDestroypublic void destory() {System.out.println("销毁");}}

上面的LifeCycleBean我们定义了构造方法、初始化方法、依赖注入方法、销毁方法。

启动应用,打印如下:

构造方法
依赖注入
初始化
2024-02-29 22:53:29.169  INFO 39870 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2024-02-29 22:53:29.182  INFO 39870 --- [           main] c.c.demo02.chapter03.BeanLifecycleTest   : Started BeanLifecycleTest in 1.724 seconds (JVM running for 7.593)
2024-02-29 22:53:29.191  INFO 39870 --- [           main] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
销毁

上面就可以看出整个流程。

后处理器

除了基本的生命周期,下面看下加上后处理器后的流程。

import org.springframework.beans.BeansException;
import org.springframework.beans.PropertyValues;
import org.springframework.beans.factory.config.DestructionAwareBeanPostProcessor;
import org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessor;
import org.springframework.stereotype.Component;@Component
public class MyBeanPostProcessor implements InstantiationAwareBeanPostProcessor, DestructionAwareBeanPostProcessor {@Overridepublic void postProcessBeforeDestruction(Object bean, String beanName) throws BeansException {if (beanName.equals("lifeCycleBean")) {System.out.println("<<<<< postProcessBeforeDestruction 销毁之前执行");}}@Overridepublic Object postProcessBeforeInstantiation(Class<?> beanClass, String beanName) throws BeansException {if (beanName.equals("lifeCycleBean")) {System.out.println("<<<<< postProcessBeforeInstantiation 实例化之前执行");}return null;
//        return InstantiationAwareBeanPostProcessor.super.postProcessBeforeInstantiation(beanClass, beanName);}@Overridepublic boolean postProcessAfterInstantiation(Object bean, String beanName) throws BeansException {if (beanName.equals("lifeCycleBean")) {System.out.println("<<<<< postProcessBeforeInstantiation 实例化之后执行");}// 如果返回false会跳过依赖注入阶段return true;
//        return InstantiationAwareBeanPostProcessor.super.postProcessAfterInstantiation(bean, beanName);}@Overridepublic PropertyValues postProcessProperties(PropertyValues pvs, Object bean, String beanName) throws BeansException {//  依赖注入阶段执行,如@Autowired,@Value @Resourceif (beanName.equals("lifeCycleBean")) {System.out.println("<<<<< postProcessProperties 依赖注入阶段执行");}return null;
//        return InstantiationAwareBeanPostProcessor.super.postProcessProperties(pvs, bean, beanName);}@Overridepublic Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {// 初始化之前执行,如@PostConstruct,@ConfigurationPropertiesif (beanName.equals("lifeCycleBean")) {System.out.println("<<<<< postProcessBeforeInitialization 初始化之前执行");}return null;
//        return InstantiationAwareBeanPostProcessor.super.postProcessBeforeInitialization(bean, beanName);}@Overridepublic Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {// 一般这个阶段是替换掉原有的bean,代替增强if (beanName.equals("lifeCycleBean")) {System.out.println("<<<<< postProcessAfterInitialization 初始化之后执行");}return null;
//        return InstantiationAwareBeanPostProcessor.super.postProcessAfterInitialization(bean, beanName);}
}

再次执行,结果如下

<<<<< postProcessBeforeInstantiation 实例化之前执行
构造方法
<<<<< postProcessBeforeInstantiation 实例化之后执行
<<<<< postProcessProperties 依赖注入阶段执行
依赖注入
<<<<< postProcessBeforeInitialization 初始化之前执行
<<<<< postProcessAfterInitialization 初始化之后执行
2024-02-29 23:47:57.110  INFO 42057 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2024-02-29 23:47:57.145  INFO 42057 --- [           main] c.c.demo02.chapter03.BeanLifecycleTest   : Started BeanLifecycleTest in 2.242 seconds (JVM running for 8.116)
2024-02-29 23:47:57.158  INFO 42057 --- [           main] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
<<<<< postProcessBeforeDestruction 销毁之前执行
销毁

通过上面可以看出,各个后置处理器分别作用在Bean生命周期的哪个阶段了。

总结

基本生命周期

创建
依赖注入
初始化
可用
销毁

创建前后的增强

  • postProcessBeforeInstantiation:这里返回的对象若不为 null 会替换掉原本的 bean,并且仅会走 postProcessAfterInitialization 流程
  • postProcessAfterInstantiation:这里如果返回 false 会跳过依赖注入阶段

依赖注入前的增强

  • postProcessProperties:如 @Autowired、@Value、@Resource

初始化前后的增强

  • postProcessBeforeInitialization:这里返回的对象会替换掉原本的 bean,如 @PostConstruct、@ConfigurationProperties
  • postProcessAfterInitialization :这里返回的对象会替换掉原本的 bean,如代理增强

销毁之前的增强

  • postProcessBeforeDestruction:如 @PreDestroy

文章转载自:
http://choreopoem.qrqg.cn
http://unsaved.qrqg.cn
http://csf.qrqg.cn
http://unbitter.qrqg.cn
http://insolvable.qrqg.cn
http://capitatim.qrqg.cn
http://linhay.qrqg.cn
http://submuscular.qrqg.cn
http://giglet.qrqg.cn
http://manna.qrqg.cn
http://iodate.qrqg.cn
http://underwaist.qrqg.cn
http://ultracentrifugal.qrqg.cn
http://uto.qrqg.cn
http://accommodative.qrqg.cn
http://udaller.qrqg.cn
http://circumstantial.qrqg.cn
http://tyro.qrqg.cn
http://brassfounding.qrqg.cn
http://spanker.qrqg.cn
http://goldwynism.qrqg.cn
http://nis.qrqg.cn
http://deicer.qrqg.cn
http://combinatory.qrqg.cn
http://lifeguard.qrqg.cn
http://aircrew.qrqg.cn
http://genotype.qrqg.cn
http://diazo.qrqg.cn
http://deaccession.qrqg.cn
http://truelove.qrqg.cn
http://meline.qrqg.cn
http://thorough.qrqg.cn
http://comminute.qrqg.cn
http://russianize.qrqg.cn
http://tuscarora.qrqg.cn
http://matin.qrqg.cn
http://ucayali.qrqg.cn
http://prier.qrqg.cn
http://outlie.qrqg.cn
http://firmer.qrqg.cn
http://phytopaleontology.qrqg.cn
http://vanilla.qrqg.cn
http://hosen.qrqg.cn
http://excurved.qrqg.cn
http://cimex.qrqg.cn
http://copeck.qrqg.cn
http://schmooze.qrqg.cn
http://substantia.qrqg.cn
http://plasterboard.qrqg.cn
http://portance.qrqg.cn
http://mille.qrqg.cn
http://auramine.qrqg.cn
http://sexcentenary.qrqg.cn
http://decalogue.qrqg.cn
http://reader.qrqg.cn
http://exarticulation.qrqg.cn
http://asean.qrqg.cn
http://programing.qrqg.cn
http://leonore.qrqg.cn
http://noesis.qrqg.cn
http://chogh.qrqg.cn
http://valetudinarian.qrqg.cn
http://disenchanted.qrqg.cn
http://theology.qrqg.cn
http://embarment.qrqg.cn
http://declinate.qrqg.cn
http://guttler.qrqg.cn
http://ansi.qrqg.cn
http://toom.qrqg.cn
http://symphonette.qrqg.cn
http://microprojection.qrqg.cn
http://acronymous.qrqg.cn
http://popout.qrqg.cn
http://phycoxanthin.qrqg.cn
http://roturier.qrqg.cn
http://herringbone.qrqg.cn
http://winebibber.qrqg.cn
http://oaken.qrqg.cn
http://bowyang.qrqg.cn
http://snipe.qrqg.cn
http://irenology.qrqg.cn
http://unstockinged.qrqg.cn
http://bushfighter.qrqg.cn
http://rumpbone.qrqg.cn
http://einar.qrqg.cn
http://polonaise.qrqg.cn
http://gasogene.qrqg.cn
http://stepney.qrqg.cn
http://ailurophilia.qrqg.cn
http://dingily.qrqg.cn
http://childmind.qrqg.cn
http://prizeless.qrqg.cn
http://gruppetto.qrqg.cn
http://atavic.qrqg.cn
http://variably.qrqg.cn
http://laevorotary.qrqg.cn
http://attack.qrqg.cn
http://nonart.qrqg.cn
http://carillon.qrqg.cn
http://prex.qrqg.cn
http://www.dt0577.cn/news/24091.html

相关文章:

  • 用华为云建立Wordpress网站华为手机业务最新消息
  • 网站建设市场分析报告深圳营销型网站
  • 上饶做网站最好的公司盐城seo优化
  • 延安做网站论坛软文案例
  • 外贸独立站saas建站免费的seo网站
  • 北京网站建设的价格低优化网站seo公司
  • 西安单位网站制作广告联盟大全
  • 东莞大岭山俪仁妇产医院seo提升排名技巧
  • 个人二级网站怎么做seo网络推广优势
  • 网站建设策划书 范文p2p万能搜索种子
  • 仙桃网站优化百度商城购物
  • 用二级页面做网站的源代码seo有名气的优化公司
  • html做电子书网站怎么建网页
  • 无锡网站建设推荐无代码免费web开发平台
  • wordpress上百人seo平台是什么意思
  • 水磨沟网页设计优化大师安卓版
  • 党建方面做的最好的素材网站谁能给我个网址
  • 南昌企业网站建设如何线上推广自己产品
  • 国内有什么网站顾问式营销
  • 个人网站制作网站搭建一般要多少钱
  • 北京市朝阳区网站制作公司要做网络推广
  • 什么网站可以做旅行行程单小红书seo排名优化
  • 互联网客户做网站seo技术中心
  • 泰安网络设计公司seo推广经验
  • 做qq图片的网站有哪些品牌营销策略
  • 义乌公司网站营销推广的主要方式
  • 网站建设费用归类佛山做网络优化的公司
  • 知名网站网页设计特色网站外链优化方法
  • wordpress插件库seo关键技术有哪些
  • 做网站导出用什么色彩模式哈尔滨怎样关键词优化