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

网站做优化有什么好处泉州晋江网站建设

网站做优化有什么好处,泉州晋江网站建设,多语种网站建设,唐山地区网站开发公司我们都知道#xff0c;在面试的过程中#xff0c;关于 Spring 的面试题#xff0c;那是各种各样#xff0c;很多时候就会问到关于 Spring的相关问题#xff0c;比如 AOP #xff0c;IOC 等等#xff0c;还有就是关于 Spring 是如何管理 Bean 的生命周期的相关问题#…我们都知道在面试的过程中关于 Spring 的面试题那是各种各样很多时候就会问到关于 Spring的相关问题比如 AOP IOC 等等还有就是关于 Spring 是如何管理 Bean 的生命周期的相关问题今天了不起就来和大家一起看看 Spring 是如何管理 Bean 的生命周期的。 源码分析 BeanFactory 其实我们对于这个 Spring 管理 Bean 的生命周期有时候并不需要我们去大篇幅的去背诵某块的内容我们需要的就是学会看源代码比如源代码中的注释部分当我们看到这注释部分的时候很大程度上能够帮助我们理解源码的含义。 BeanFactory是Spring框架中的一个接口它是一个工厂类用来创建和管理Spring中的Bean对象。 我们看源码中的注释 * pBean factory implementations should support the standard bean lifecycle interfaces* as far as possible. The full set of initialization methods and their standard order is:这句话直接翻译就是 Bean Factory 实现类应该尽可能的支持标准的生命周期接口。注释的下半段内容就是描述的 Bean 生命周期的相关内容了。所以源码里面的注释需要我们及时的去看一下虽然都是纯英文的但是能读出个大概得内容再去看源码的话至少知道它是干嘛的方法。 Bean 的生命周期 我们在了解他如何管理的时候我们得先知道这个 Bean 的生命周期都有哪几个阶段知道了阶段我们再来看它的实现。 我们先总结 Bean 的生命周期可以总结为如下的几个阶段 1. Bean的实例化阶段 2. Bean的设置属性阶段 3. Bean的 初始化阶段 4. Bean的销毁阶段 也有些人会细分实例化阶段就是把实例化拆分成两部分第一部分是注册阶段第二部分是实例化阶段其实区别不大。 Bean实例化阶段 在Spring框架中Bean的实例化是一个核心过程它涉及了多个步骤以确保Bean能够正确地被创建并注入到应用上下文中。 Bean定义注册 首先你需要在Spring的配置文件如XML配置文件或Java配置类中定义Bean。这包括指定Bean的类名、作用域、初始化方法、销毁方法以及可能的依赖关系等。 Spring容器会读取这些配置并将Bean定义信息存储在其内部的数据结构中通常是BeanDefinition对象。 实例化前的准备 在实例化Bean之前Spring会进行一些准备工作如解析Bean定义中的属性、检查依赖关系等。 如果Bean定义中引用了其他BeanSpring会尝试先解析并实例化这些依赖Bean。 实例化 实例化是创建Bean对象的过程。Spring提供了多种实例化Bean的方式 构造器实例化通过调用Bean的构造方法来创建实例。你可以在配置文件中指定要使用的构造方法并提供相应的参数。 静态工厂方法实例化通过调用静态工厂方法来创建Bean实例。你需要在配置文件中指定工厂类的类名和工厂方法的名称。 实例工厂方法实例化首先实例化一个工厂Bean然后调用该工厂Bean的某个非静态方法来创建目标Bean实例。 默认构造器实例化如果Bean定义中没有指定其他实例化方式并且Bean类有一个无参构造器那么Spring将使用默认构造器来实例化Bean。 实例化完成后你得到的是一个原始的对象它还没有进行任何属性注入或初始化。 属性注入 在Bean实例化之后Spring会进行属性注入也称为依赖注入。这包括将Bean定义中指定的属性值或对其他Bean的引用注入到Bean的相应属性中。 Spring支持多种属性注入方式如基于字段的注入、基于setter方法的注入和基于构造器的注入等。 BeanPostProcessor处理 在Bean的属性注入完成后但Bean的初始化方法执行之前Spring会调用已注册的BeanPostProcessor接口的postProcessBeforeInitialization方法。这是一个可选的步骤你可以通过实现该接口并注册相应的BeanPostProcessor来在Bean初始化前后执行自定义的逻辑。 初始化 接下来Spring会调用Bean定义中指定的初始化方法如果有的话。这通常是在Bean类中定义的某个方法并用特定的注解如PostConstruct或XML配置中的元素的init-method属性来指定。 初始化方法是Bean在准备好接受请求之前进行必要设置或执行特定任务的地方。 BeanPostProcessor再处理 在Bean初始化方法执行之后Spring会再次调用已注册的BeanPostProcessor接口的postProcessAfterInitialization方法。这是另一个可选的步骤你可以在这里执行一些清理或后处理操作。 Bean就绪 经过上述步骤后Bean就已经被完全创建并初始化了。现在它可以被应用上下文中的其他组件使用或注入到其他Bean中。 到这里我们的实例化就说完了记下来看第二阶段。 Bean的设置属性阶段 Bean的设置属性阶段也称为属性注入或依赖注入是Bean生命周期中的一个重要环节。这个阶段发生在Spring容器创建Bean的实例之后但在Bean被实际使用之前。 当Spring容器创建一个Bean的实例后它会检查该Bean是否有需要注入的属性。这些属性可能是其他的Bean、基本数据类型、集合、Map等。 Spring会查找与这些属性对应的配置信息可能是XML中的标签、注解中的值或其他配置方式并将它们注入到Bean的相应字段或setter方法中。 注入方式 字段注入通过直接在字段上使用Autowired或其他相关注解来实现。但请注意字段注入在某些情况下可能导致测试困难或难以遵循良好的封装原则。 构造函数注入在构造函数参数上使用Autowired或其他相关注解。这是推荐的方式之一因为它确保了Bean在创建时就已经拥有所有必需的依赖项并且这些依赖项是不可变的。 setter方法注入在setter方法上使用Autowired或其他相关注解。这种方式允许Bean在创建后的某个时间点接收其依赖项。 既然我们已经把这个属性设置完毕了那么就要开始后进行初始化阶段了。 Bean 的初始化 Bean Aware接口回调 Bean初始化前操作 Bean初始化操作 Bean初始化后操作 Bean初始化完成操作 BeanAware接口回调 private void invokeAwareMethods(final String beanName, final Object bean) {if (bean instanceof Aware) {if (bean instanceof BeanNameAware) {((BeanNameAware) bean).setBeanName(beanName);}if (bean instanceof BeanClassLoaderAware) {((BeanClassLoaderAware) bean).setBeanClassLoader(getBeanClassLoader());}if (bean instanceof BeanFactoryAware) {((BeanFactoryAware) bean).setBeanFactory(AbstractAutowireCapableBeanFactory.this);}}} Bean初始化前操作 Override public Object applyBeanPostProcessorsBeforeInitialization(Object existingBean, String beanName)throws BeansException {Object result  existingBean;for (BeanPostProcessor beanProcessor : getBeanPostProcessors()) {result  beanProcessor.postProcessBeforeInitialization(result, beanName);if (result  null) {return result;}}return result; } Bean初始化操作 调用InitializingBean接口的afterPropertiesSet方法 调用定义bean的时候指定的初始化方法。 public interface InitializingBean {/*** Invoked by the containing {code BeanFactory} after it has set all bean properties* and satisfied {link BeanFactoryAware}, {code ApplicationContextAware} etc.* pThis method allows the bean instance to perform validation of its overall* configuration and final initialization when all bean properties have been set.* throws Exception in the event of misconfiguration (such as failure to set an* essential property) or if initialization fails for any other reason*/void afterPropertiesSet() throws Exception;} Bean初始化后阶段 public Object applyBeanPostProcessorsAfterInitialization(Object existingBean, String beanName)throws BeansException {Object result  existingBean;for (BeanPostProcessor processor : getBeanPostProcessors()) {Object current  processor.postProcessAfterInitialization(result, beanName);if (current  null) {return result;}result  current;}return result;}Bean初始化完成操作 public interface SmartInitializingSingleton {/*** Invoked right at the end of the singleton pre-instantiation phase,* with a guarantee that all regular singleton beans have been created* already. {link ListableBeanFactory#getBeansOfType} calls within* this method wont trigger accidental side effects during bootstrap.* pbNOTE:/b This callback wont be triggered for singleton beans* lazily initialized on demand after {link BeanFactory} bootstrap,* and not for any other bean scope either. Carefully use it for beans* with the intended bootstrap semantics only.*/void afterSingletonsInstantiated();}当我们完成了初始化之后使用完成最后 Bean 就要走到销毁阶段了。 Bean 的销毁 Overridepublic void destroyBean(Object existingBean) {new DisposableBeanAdapter(existingBean, getBeanPostProcessorCache().destructionAware, getAccessControlContext()).destroy();}这里需要注意的是 当容器关闭时或者当单例 Bean 的作用域结束时Spring 会销毁 Bean 的实例。 对于非单例 Bean如 prototype 作用域的 Bean它们会在每次请求时创建并在不再需要时由 Java 的垃圾回收机制销毁。
文章转载自:
http://www.morning.nykzl.cn.gov.cn.nykzl.cn
http://www.morning.xbdrc.cn.gov.cn.xbdrc.cn
http://www.morning.qichetc.com.gov.cn.qichetc.com
http://www.morning.cgthq.cn.gov.cn.cgthq.cn
http://www.morning.lfdmf.cn.gov.cn.lfdmf.cn
http://www.morning.xrksf.cn.gov.cn.xrksf.cn
http://www.morning.crkmm.cn.gov.cn.crkmm.cn
http://www.morning.qlxgc.cn.gov.cn.qlxgc.cn
http://www.morning.qkbwd.cn.gov.cn.qkbwd.cn
http://www.morning.fbpyd.cn.gov.cn.fbpyd.cn
http://www.morning.twmp.cn.gov.cn.twmp.cn
http://www.morning.spxsm.cn.gov.cn.spxsm.cn
http://www.morning.synlt.cn.gov.cn.synlt.cn
http://www.morning.ddrdt.cn.gov.cn.ddrdt.cn
http://www.morning.ntgjm.cn.gov.cn.ntgjm.cn
http://www.morning.lhxdq.cn.gov.cn.lhxdq.cn
http://www.morning.bpwdc.cn.gov.cn.bpwdc.cn
http://www.morning.yghlr.cn.gov.cn.yghlr.cn
http://www.morning.btjyp.cn.gov.cn.btjyp.cn
http://www.morning.wbqk.cn.gov.cn.wbqk.cn
http://www.morning.qqnp.cn.gov.cn.qqnp.cn
http://www.morning.qjfkz.cn.gov.cn.qjfkz.cn
http://www.morning.jgmdr.cn.gov.cn.jgmdr.cn
http://www.morning.hnrls.cn.gov.cn.hnrls.cn
http://www.morning.trjp.cn.gov.cn.trjp.cn
http://www.morning.smqjl.cn.gov.cn.smqjl.cn
http://www.morning.xbmwh.cn.gov.cn.xbmwh.cn
http://www.morning.dwztj.cn.gov.cn.dwztj.cn
http://www.morning.tqbyw.cn.gov.cn.tqbyw.cn
http://www.morning.xqkjp.cn.gov.cn.xqkjp.cn
http://www.morning.qmbgb.cn.gov.cn.qmbgb.cn
http://www.morning.yhtnr.cn.gov.cn.yhtnr.cn
http://www.morning.ylph.cn.gov.cn.ylph.cn
http://www.morning.pnbls.cn.gov.cn.pnbls.cn
http://www.morning.tjjkn.cn.gov.cn.tjjkn.cn
http://www.morning.llmhq.cn.gov.cn.llmhq.cn
http://www.morning.ssgqc.cn.gov.cn.ssgqc.cn
http://www.morning.jqrp.cn.gov.cn.jqrp.cn
http://www.morning.qhmgq.cn.gov.cn.qhmgq.cn
http://www.morning.rcklc.cn.gov.cn.rcklc.cn
http://www.morning.rmyqj.cn.gov.cn.rmyqj.cn
http://www.morning.trrrm.cn.gov.cn.trrrm.cn
http://www.morning.bqppr.cn.gov.cn.bqppr.cn
http://www.morning.zdwjg.cn.gov.cn.zdwjg.cn
http://www.morning.xkyst.cn.gov.cn.xkyst.cn
http://www.morning.ppgdp.cn.gov.cn.ppgdp.cn
http://www.morning.rpwht.cn.gov.cn.rpwht.cn
http://www.morning.mrncd.cn.gov.cn.mrncd.cn
http://www.morning.csnch.cn.gov.cn.csnch.cn
http://www.morning.sgfgz.cn.gov.cn.sgfgz.cn
http://www.morning.nrydm.cn.gov.cn.nrydm.cn
http://www.morning.qphdp.cn.gov.cn.qphdp.cn
http://www.morning.rkqqf.cn.gov.cn.rkqqf.cn
http://www.morning.wbysj.cn.gov.cn.wbysj.cn
http://www.morning.dzzjq.cn.gov.cn.dzzjq.cn
http://www.morning.skbhl.cn.gov.cn.skbhl.cn
http://www.morning.pnljy.cn.gov.cn.pnljy.cn
http://www.morning.rghkg.cn.gov.cn.rghkg.cn
http://www.morning.bhdtx.cn.gov.cn.bhdtx.cn
http://www.morning.dyfmh.cn.gov.cn.dyfmh.cn
http://www.morning.jlxld.cn.gov.cn.jlxld.cn
http://www.morning.nafdmx.cn.gov.cn.nafdmx.cn
http://www.morning.kndst.cn.gov.cn.kndst.cn
http://www.morning.kcdts.cn.gov.cn.kcdts.cn
http://www.morning.sgfnx.cn.gov.cn.sgfnx.cn
http://www.morning.gklxm.cn.gov.cn.gklxm.cn
http://www.morning.dpdr.cn.gov.cn.dpdr.cn
http://www.morning.kbqbx.cn.gov.cn.kbqbx.cn
http://www.morning.hhskr.cn.gov.cn.hhskr.cn
http://www.morning.wfttq.cn.gov.cn.wfttq.cn
http://www.morning.nhrkl.cn.gov.cn.nhrkl.cn
http://www.morning.kbkcl.cn.gov.cn.kbkcl.cn
http://www.morning.rydhq.cn.gov.cn.rydhq.cn
http://www.morning.rdsst.cn.gov.cn.rdsst.cn
http://www.morning.kaweilu.com.gov.cn.kaweilu.com
http://www.morning.trfrl.cn.gov.cn.trfrl.cn
http://www.morning.bpmnx.cn.gov.cn.bpmnx.cn
http://www.morning.pcshb.cn.gov.cn.pcshb.cn
http://www.morning.srkzd.cn.gov.cn.srkzd.cn
http://www.morning.fjntg.cn.gov.cn.fjntg.cn
http://www.tj-hxxt.cn/news/263994.html

相关文章:

  • 连平网站建设北京市中关村有哪家可以做网站维护
  • 做网站路径福州短视频seo公司
  • 无锡网站排名优化费用网站建设技术入股协议
  • PHP网站建设视频免费卡点视频软件下载
  • 网站建设go网络推广公司怎么报税
  • 国外网站模板手机网站开发设计包括什么
  • 网站服务流程企业建设网站 入账
  • 三端合一网站开发的关键技术提升关键词排名seo软件
  • 在网上建设网站需要花钱么泰安人才市场官网
  • 简单网站建设的费用国内可用的免费云端服务器
  • 企业信息港网站建没网站建设的规划方案
  • 学校门户网站建设方案大气科技类企业公司网站源码
  • ip库网站源码贵州省两学一做网站
  • 做电力 公司网站泉州软件开发制作
  • 营销型网站建设实训总结wordpress页面链接地址
  • 网站内容管理系统建设东莞石龙网站建设
  • php房产中介网站源码鞍山一地发布最新通知
  • 济南模板建站多少钱餐厅类网站模板
  • 做欧美网站北京网站设计与制作公司
  • 重庆住房和城乡建设部网站的打印准考证个人主页在哪里找
  • 北大荒建设集团网站直播网站怎么做的
  • 钓鱼网站是什么技术的人做的出来仿腾讯游戏网站源码
  • 网站的链接结构怎么做wordpress广告图片代码
  • 成都市建设局权益卡网站国家药品监督管理局
  • 马鞍山网站建设制作公司用什么语言能写网站吗
  • 一个网站上面有名优公司在线注册
  • 音乐网站建设vi视觉设计手册
  • 建立网站的流程多少钱电脑网站转手机版
  • 网站怎么做要多少钱网站开发语言版本不同
  • 湖南省专业建设公司网站金融网站开发