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

wordpress建立php站点地图云浮北京网站建设

wordpress建立php站点地图,云浮北京网站建设,台州网站排名公司,搜狗推广手机客户端本文基于Spring5.3.7 参考#xff1a; kykangyuky Spring中bean的生命周期 阿斌Java之路 SpringBean的生命周期#xff0c; 杨开振 JavaEE互联网轻量级框架整合开发 黑马程序员 JavaEE企业级应用开发教程 马士兵 Spring源码讲解 一. SpringBean生命周期流程图 二. 示例代码 …本文基于Spring5.3.7 参考 kykangyuky Spring中bean的生命周期 阿斌Java之路 SpringBean的生命周期 杨开振 JavaEE互联网轻量级框架整合开发 黑马程序员 JavaEE企业级应用开发教程 马士兵 Spring源码讲解 一. SpringBean生命周期流程图 二. 示例代码 1. 定义果汁描述实体类 package com.xiaobai.spring_bean_life_cycle;import lombok.Data; import lombok.extern.slf4j.Slf4j;/*** author wangtw* date 2023/6/24 16:38* description 果汁描述实体类*/ Slf4j Data public class Source {public Source() {log.info(source实例化);}/*** 水果*/private String fruit;/*** 糖量*/private String sugar;/*** 大小*/private String size; }2. 定义果汁生成器 package com.xiaobai.spring_bean_life_cycle;import lombok.Data; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeansException; import org.springframework.beans.factory.*; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware;/*** author wangtw* date 2023/6/24 16:28* description 果汁生成器*/ Slf4j Data public class JuiceMaker implements BeanNameAware, BeanFactoryAware,ApplicationContextAware, InitializingBean, DisposableBean {public JuiceMaker(){log.info(juice实例化);}private String beverageShop;private Source source;/*** 自定义初始化方法*/public void init() {log.info(【{}】执行自定义初始化方法, this.getClass().getSimpleName());}/*** 自定义销毁方法*/public void myDestroy() {log.info(【{}】执行自定义销毁方法, this.getClass().getSimpleName());}public String makeJuice() {String juice 这是一杯由 beverageShop 饮品店提供的 source.getSize() source.getSugar() source.getFruit();return juice;}Overridepublic void setBeanFactory(BeanFactory beanFactory) throws BeansException {log.info(【{}】调用BeanFactoryAware接口的setBeanFactory方法, this.getClass().getSimpleName());}Overridepublic void setBeanName(String s) {log.info(【{}】调用BeanNameAware接口的setBeanName方法, this.getClass().getSimpleName());}Overridepublic void destroy() throws Exception {log.info(调用接口DisposableBean的destroy方法);}Overridepublic void afterPropertiesSet() throws Exception {log.info(【{}】调用InitializingBean接口的afterPropertiesSet方法, this.getClass().getSimpleName());}Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {log.info(【{}】调用ApplicationContextAware接口的setApplicationContext方法, this.getClass().getSimpleName());} }3. 定义Bean实现BeanPostProcessor接口 package com.xiaobai.spring_bean_life_cycle;import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component;/*** author wangtw* date 2023/6/24 16:07* description*/ Slf4j public class BeanPostProcessorImpl implements BeanPostProcessor {Overridepublic Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {log.info(【{}】对象{}预初始化开始, bean.getClass().getSimpleName(), beanName);return bean;}Overridepublic Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {log.info(【{}】对象{}预初始化完成, bean.getClass().getSimpleName(), beanName);return bean;} }4. 定义SpringBean配置类 package com.xiaobai.spring_bean_life_cycle;import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;/*** author wangtw* date 2023/6/25 10:33* description Spring配置类*/ Configuration public class LifeConfiguration {Bean(beanPostProcessor)public BeanPostProcessor beanPostProcessor() {return new BeanPostProcessorImpl();}Bean(source)public Source source() {Source source new Source();source.setFruit(橙汁);source.setSugar(少糖);source.setSize(大杯);return source;}Bean(value juiceMaker, initMethod init, destroyMethod myDestroy)public JuiceMaker juiceMaker() {JuiceMaker juiceMaker new JuiceMaker();juiceMaker.setSource(source());juiceMaker.setBeverageShop(贡茶);return juiceMaker;} }5. 测试类及输出结果 package com.xiaobai.spring_bean_life_cycle;import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext;/*** author wangtw* date 2023/6/25 10:40* description springBean生命周期测试类*/ Slf4j public class SpringBeanLifeTest {Testpublic void testLifeCycle() {ConfigurableApplicationContext context new AnnotationConfigApplicationContext(LifeConfiguration.class);JuiceMaker juiceMaker (JuiceMaker) context.getBean(juiceMaker);log.info(juiceMaker.makeJuice());context.close();} }三. 源码解析 一Bean实例化 1. 根据注解加载Bean org.springframework.beans.factory.config.BeanFactoryPostProcessor org.springframework.context.annotation.ConfigurationClassPostProcessor#processConfigBeanDefinitions org.springframework.context.annotation.ConfigurationClassParser#parse(java.util.Setorg.springframework.beans.factory.config.BeanDefinitionHolder) org.springframework.context.annotation.ConfigurationClassParser#parse(org.springframework.core.type.AnnotationMetadata, java.lang.String) org.springframework.context.annotation.ConfigurationClassParser#processConfigurationClass org.springframework.context.annotation.ConfigurationClassParser#doProcessConfigurationClass 2. 在SpringBean实例化前会把扫描到的类加载到BeanDefinition中然后将BeanDefinition中的信息注册到Spring容器中 org.springframework.context.annotation.AnnotationConfigApplicationContext#AnnotationConfigApplicationContext() org.springframework.context.annotation.AnnotationConfigApplicationContext#register org.springframework.context.annotation.AnnotatedBeanDefinitionReader#doRegisterBean org.springframework.beans.factory.support.BeanDefinitionRegistry#registerBeanDefinition 3. 完成了BeanDefinition注册后对Bean进行实例化 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#createBeanInstance 二初始化 1. 属性赋值 1自定义对象属性赋值 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#populateBean 2容器对象赋值检查aware接口并设置相关依赖aware接口用于标记判断调用什么方法 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#invokeAwareMethods 2. 执行前置处理方法 org.springframework.beans.factory.config.BeanPostProcessor#postProcessBeforeInitialization 3. 执行初始化方法 1检测Bean是否实现了InitializingBean接口 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#invokeInitMethods 2调用afterPropertiesSet方法 org.springframework.beans.factory.InitializingBean#afterPropertiesSet 3调用自定义初始化方法 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#invokeCustomInitMethod 4. 执行后置处理方法 org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator#postProcessAfterInitialization org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator#wrapIfNecessary 创建代理对象 org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator#createProxy org.springframework.aop.framework.AopProxy#getProxy(java.lang.ClassLoader) 三使用 四销毁
http://www.hkea.cn/news/14473430/

相关文章:

  • 网站开发最新技术百度一下免费下载安装
  • 沈阳网站制作的公司哪家好网站排名优化公司
  • 有什的自学做网站淘宝联盟网站推广位怎么做
  • 可以自己买个服务器做网站吗百度免费优化
  • 给人家做的网站想改怎么改整合营销理论
  • 网站分站加盟宣传片制作标准参数
  • 建设文明网站包括哪些内容专门做拼花网站
  • 如何把网站放在根目录兰州网站建设招聘信息
  • 网站流量攻击软件wordpress垂直模板
  • 网站建设与维护试题手机与电脑网站制作
  • wordpress网站代码优化搜狗推广优化
  • 哪家公司提供专业的网站建设微信wordpress小程序
  • 手机网站建设价位阳朔到桂林游船时间表
  • 写网站论文怎么做帮做网站一般多少钱
  • 网站图片上的水印怎么做企业网页建设公司哪家比较好
  • 大连网络工程谷歌seo优化是什么
  • 网站建设群标签好写什么中国室内设计联盟图片
  • 移动开发主要学什么百度seo综合查询
  • 网站开发设计需要什么证书企业管理十大系统
  • 关于医院网站建设的通知俄文网站推广
  • 上海企业免费建站网页升级紧急通知自动跳转
  • 网站运营 策划 推广 维护房子简装修效果图片
  • 江苏建设部官方网站ppt模板下载免费版百度云
  • 网站开发工程师应聘书700字网站开发技术服务合同
  • 锡盟建设局网站让人做网站 需要准备什么条件
  • 企业站群系统it运维需要学哪些知识
  • 怎么给搞笑网站做文案内蒙古城乡和住房建设厅网站
  • win2003建设网站三明注册公司
  • 网站主页图片工作总结范文简短
  • c 网站建设红安建设局投诉网站