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

做家教网站要多少钱软件开发报价单

做家教网站要多少钱,软件开发报价单,设计平台图片,重庆在线开放平台本文基于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.dnsts.com.cn/news/276076.html

相关文章:

  • 湖北建设厅官方网站福建住房和城乡建设网站
  • 网站开启gzip压缩哪个网站做图书广告好
  • 中国做外贸的网站青岛seo网站排名
  • 网站如何做双链路新开传奇网页游戏
  • 中山市建网站公司久久建筑资料网
  • 怎样做网站推广啊视频dw 做简单静态网站
  • 郑州网站推广哪家好小型企业网站设计教程
  • 企业网站搭建步骤怎样运营网站
  • 怎么做直播网站超管wordpress live-2d
  • 金华网站建设公司排名html教程w3school
  • 邱县企业做网站推广公司网站开发制作
  • 网站建设费 科目最好的建设工程网站
  • 酒店网站建设注意什么给别人做的网站要复杂做安全扫描
  • 高级网站开发工程师证书网站建设后台cms管理系统方案
  • 网站续费合同书网站改版方案怎么写
  • 兰州城建设计院网站wordpress 08影院2.0
  • 乔拓云微信小程序北京网站优化页面
  • 票据理财网站建设手机 网站内 搜索
  • 泰国网站域名快站建站怎么收费的
  • 赤峰建设业协会的官方网站夫唯seo视频教程
  • wordpress首页不显示工具栏广州seo外包
  • 中国专业的网站建设安徽seo优化
  • php+mysql网站开发全程实例 于荷云 pdf如何做网站做网站需要多少钱
  • 重庆九龙坡营销型网站建设价格登录建设银行网站打不开
  • 网站 网站建设定制关于做视频网站的一些代码
  • 高端网站建设公司增长无法解析服务器域名
  • 自己做网站网页剧中青岛知名网站建设公司排名
  • 物流建设网站全国网站设计公司
  • 华为荣耀官网优化网站排名如何
  • 哪里有建网站的公司高端女装