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

做pc端网站精英淘宝图片做链接的网站

做pc端网站精英,淘宝图片做链接的网站,网站开发设计参考文献,小程序开发文档Bean实例化的基本流程 加载xml配置文件#xff0c;解析获取配置中的每个的信息#xff0c;封装成一个个的BeanDefinition对象将BeanDefinition存储在一个名为beanDefinitionMap的MapString,BeanDefinition中ApplicationContext底层遍历beanDefinitionMap#xff0c…Bean实例化的基本流程 加载xml配置文件解析获取配置中的每个的信息封装成一个个的BeanDefinition对象将BeanDefinition存储在一个名为beanDefinitionMap的MapString,BeanDefinition中ApplicationContext底层遍历beanDefinitionMap创建Bean实例对象创建好的Bean实例对象被存储到一个名为singletonObjects的MapString,Object中当执行applicationContext.getBean(beanName)时从singletonObjects去匹配Bean实例返回 Spring的后处理器 Spring的后处理器是Spring对外开发的重要扩展点允许我们介入到Bean的整个实例化流程中来以达到动态注册BeanDefinition动态修改BeanDefinition以及动态修改Bean的作用。Spring主要有两种后处理器 BeanFactoryPostProcessorBean工厂后处理器在BeanDefinitionMap填充完毕Bean实例化之前执行BeanPostProcessorBean后处理器一般在Bean实例化之后填充到单例池singletonObjects之前执行 BeanFactoryPostProcessor Bean工厂后处理器——BeanFactoryPostProcessor BeanFactoryPostProcessor是一个接口规范实现了该接口的类只要交由Spring容器管理的话那么Spring就会回调该接口的方法用于对BeanDefinition注册和修改的功能 注册修改 假如现在有User和Student两个Bean且Student已经注入容器 public class MyBeanFactoryPostProcessor implements BeanFactoryPostProcessor {Overridepublic void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {System.out.println(MyBeanFactoryPostProcessor的BeanFactoryPostPostProcessor);/*修改*/BeanDefinition student beanFactory.getBeanDefinition(student);student.setBeanClassName(com.dong.bean.User);/*注册*/RootBeanDefinition definition new RootBeanDefinition();definition.setBeanClassName(com.dong.bean.Student);DefaultListableBeanFactory defaultListableBeanFactory (DefaultListableBeanFactory) beanFactory;defaultListableBeanFactory.registerBeanDefinition(student2,definition);} }修改将id为student的类型改为了User类型注册又注入了一个id为student2的Student对象注需要将工厂后处理器注入容器 配置文件 ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdbean idstudent classcom.dong.bean.Student/beanbean idbeanFactoryPostProcessor classcom.dong.processor.MyBeanFactoryPostProcessor/bean /beansBean工厂后处理器——BeanDefinitionRegistryPostProcessor Spring 提供了一个BeanFactoryPostProcessor的子接口BeanDefinitionRegistryPostProcessor专门用于注册BeanDefinition操作 public class MyBeanFactoryPostProcessor2 implements BeanDefinitionRegistryPostProcessor {Overridepublic void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry beanDefinitionRegistry) throws BeansException {BeanDefinition beanDefinition new RootBeanDefinition();beanDefinition.setBeanClassName(com.dong.bean.Student); beanDefinitionRegistry.registerBeanDefinition(student3,beanDefinition);}Overridepublic void postProcessBeanFactory(ConfigurableListableBeanFactory configurableListableBeanFactory) throws BeansException {} }postProcessBeanDefinitionRegistry方法注册BeanDefinition 配置文件注入Bean后工厂处理器 ?xml version1.0 encodingUTF-8? beans xmlnshttp://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.xsdbean idstudent classcom.dong.bean.Student/beanbean idbeanFactoryPostProcessor2 classcom.dong.processor.MyBeanFactoryPostProcessor2/bean /beans​ BeanPostProcessor Bean被实例化后到最终缓存到名为singletonObjects单例池之前中间会经过Bean的初始化过程例如属性的填充、初始方法init的执行等其中有一个对外进行扩展的点BeanPostProcessor我们称为Bean后处理。跟上面的 Bean工厂后处理器相似它也是一个接口实现了该接口并被容器管理的BeanPostProcessor会在流程节点上被Spring自动调用。 实现 public class MyBeanPostProcessor implements BeanPostProcessor {Overridepublic Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {System.out.println(BeanPostProcessor的before方法...);return bean;}Overridepublic Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {System.out.println(BeanPostProcessor的after方法...);return bean;} }配置文件配置Bean后处理 ?xml version1.0 encodingUTF-8? beans xmlnshttp://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.xsdbean idstudent classcom.dong.bean.Student/beanbean idbeanPostProcessor classcom.dong.processor.MyBeanPostProcessor/bean /beanspublic class Test01 {public static void main(String[] args) {ApplicationContext appliactionContext new ClassPathXmlApplicationContext(applicationContext.xml);Student student (Student) appliactionContext.getBean(student);System.out.println(student);} }输出结果 student的无参构造 BeanPostProcessor的before方法… BeanPostProcessor的after方法… com.dong.bean.Student5cb9f472 ​ SpringBean完整的生命周期 Spring Bean的生命周期是从 Bean 实例化之后即通过反射创建出对象之后到Bean成为一个完整对象最终存储到单例池中这个过程被称为Spring Bean的生命周期。Spring Bean的生命周期大体上分为三个阶段 Bean的实例化阶段Spring框架会取出BeanDefinition的信息进行判断当前Bean的范围是否是singleton的 是否不是延迟加载的是否不是FactoryBean等最终将一个普通的singleton的Bean通过反射进行实例化Bean的初始化阶段Bean创建之后还仅仅是个半成品还需要对Bean实例的属性进行填充、执行一些Aware 接口方法、执行BeanPostProcessor方法、执行InitializingBean接口的初始化方法、执行自定义初始化init方法等。该阶段是Spring最具技术含量和复杂度的阶段Bean的完成阶段经过初始化阶段Bean就成为了一个完整的Spring Bean被存储到单例池singletonObjects中去了即完成了Spring Bean的整个生命周期 由于Bean的初始化阶段的步骤比较复杂所以着重研究Bean的初始化阶段 Bean实例的属性填充Aware接口属性注入BeanPostProcessor的before()方法回调InitializingBean接口的初始化方法回调自定义初始化方法init回调BeanPostProcessor的after()方法回调 Bean实例的填充 Spring在进行属性注入时会分为如下几种情况 注入普通属性String、int或存储基本类型的集合时直接通过set方法的反射设置进去注入单向对象引用属性时从容器中getBean获取后通过set方法反射设置进去如果容器中没有则先创建被注入对象Bean实例完成整个生命周期后在进行注入操作注入双向对象引用属性时就比较复杂了涉及了循环引用循环依赖 循环依赖 注入双向对象引用属性时就会出现循环依赖 循环依赖多个实体之间相互依赖并形成闭环的情况就叫做循环依赖也叫做循环引用 循环依赖问题spring已经给出了解决方法三级缓存 Spring提供了三级缓存存储 完整Bean实例 和 半成品Bean实例 用于解决循环引用问题 在DefaultListableBeanFactory的上四级父类DefaultSingletonBeanRegistry中提供如下三个Map 假如UserService注入了一个UserDaoUserDao又注入了一个UserService实例化过程如下 UserService 实例化对象但尚未初始化将UserService存储到三级缓存UserService 属性注入需要UserDao从缓存中获取没有UserDaoUserDao实例化对象但尚未初始化将UserDao存储到到三级缓存UserDao属性注入需要UserService从三级缓存获取UserServiceUserService从三级缓存移入二级缓存UserDao执行其他生命周期过程最终成为一个完成Bean存储到一级缓存删除二三级缓存UserService 注入UserDaoUserService执行其他生命周期过程最终成为一个完成Bean存储到一级缓存删除二三级缓存 常用的Aware接口 Aware接口是一种框架辅助属性注入的一种思想其他框架中也可以看到类似的接口。框架具备高度封装性我们接触到的一般都是业务代码一个底层功能API不能轻易的获取到但是这不意味着永远用不到这些对象如果用到了 就可以使用框架提供的类似Aware的接口让框架给我们注入该对象 总结处理器的作用为Bean生命周期各个阶段提供扩展 Bean生命周期总结 先读取配置文件封装BeanDefinition信息对象将BeanDefinition对象存到BeanDefinitionMap中执行Bean后工厂处理器Bean的实例化阶段Bean实例化了但是未执行属性填充等生命周期过程是个半成品执行属性赋值Aware接口方法回调等等周期Bean的初始化阶段该阶段对Bean进行生命周期过程执行spring大多数功能增强例如注解解析AOP都在此完成Bean的存储阶段实例化并初始化好的Bean存储到单利池singletonObjects中 案例演示完整生命周期 导入坐标spring context 创建实体类Student实现接口InitializingBean,BeanFactoryAware,BeanNameAware,ApplicationContextAware public class Student implements InitializingBean,BeanFactoryAware,BeanNameAware,ApplicationContextAware{private String sname;public Student() {System.out.println(bean的无参构造方法);}public void setSname(String sname) {System.out.println(set方法赋值);this.sname sname;}public void doinit(){System.out.println(方法初始化);}Overridepublic void afterPropertiesSet() throws Exception {System.out.println(接口的初始化方法);}Overridepublic void setBeanFactory(BeanFactory beanFactory) throws BeansException {System.out.println(BeanFactoryAware接口);}Overridepublic void setBeanName(String s) {System.out.println(BeanNameAware接口);}Overridepublic void setApplicationContext(ApplicationContext applicationContext) throws BeansException {System.out.println(ApplicationContextAware接口);} }创建bean后处理类 public class MyBeanPostProcessor implements BeanPostProcessor {Overridepublic Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {System.out.println(Bean的后处理的postProcessBeforeInitialization方法);return null;}Overridepublic Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {System.out.println(Bean的后处理的postProcessAfterInitialization方法);return null;} }spring主配置文件 ?xml version1.0 encodingUTF-8? beans xmlnshttp://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.xsdbean idstudent classcom.dong.bean.Student init-methoddoinitproperty namesname value张三/property/beanbean idbeanPostProcessor classcom.dong.provessor.MyBeanPostProcessor/bean/beans测试getBean注入的Student public class Test01 {public static void main(String[] args) {ApplicationContext applicationContext new ClassPathXmlApplicationContext(applicationContext.xml);Student student (Student) applicationContext.getBean(student);System.out.println(student);} }输入结果 bean的无参构造方法 set方法赋值 BeanNameAware接口 BeanFactoryAware接口 ApplicationContextAware接口 Bean的后处理的postProcessBeforeInitialization方法 接口的初始化方法 方法初始化 Bean的后处理的postProcessAfterInitialization方法 com.dong.bean.Student6536e911
文章转载自:
http://www.morning.rjnky.cn.gov.cn.rjnky.cn
http://www.morning.xqkjp.cn.gov.cn.xqkjp.cn
http://www.morning.nwljj.cn.gov.cn.nwljj.cn
http://www.morning.wpwyx.cn.gov.cn.wpwyx.cn
http://www.morning.sbrjj.cn.gov.cn.sbrjj.cn
http://www.morning.cznsq.cn.gov.cn.cznsq.cn
http://www.morning.csjps.cn.gov.cn.csjps.cn
http://www.morning.ychrn.cn.gov.cn.ychrn.cn
http://www.morning.zxrtt.cn.gov.cn.zxrtt.cn
http://www.morning.hxxwq.cn.gov.cn.hxxwq.cn
http://www.morning.pswzc.cn.gov.cn.pswzc.cn
http://www.morning.lzph.cn.gov.cn.lzph.cn
http://www.morning.ybshj.cn.gov.cn.ybshj.cn
http://www.morning.tpfny.cn.gov.cn.tpfny.cn
http://www.morning.qmxsx.cn.gov.cn.qmxsx.cn
http://www.morning.jzfrl.cn.gov.cn.jzfrl.cn
http://www.morning.sgwr.cn.gov.cn.sgwr.cn
http://www.morning.qineryuyin.com.gov.cn.qineryuyin.com
http://www.morning.ldspj.cn.gov.cn.ldspj.cn
http://www.morning.ryfpx.cn.gov.cn.ryfpx.cn
http://www.morning.xkgyh.cn.gov.cn.xkgyh.cn
http://www.morning.fchkc.cn.gov.cn.fchkc.cn
http://www.morning.qsy40.cn.gov.cn.qsy40.cn
http://www.morning.nngq.cn.gov.cn.nngq.cn
http://www.morning.nwclg.cn.gov.cn.nwclg.cn
http://www.morning.jbxmb.cn.gov.cn.jbxmb.cn
http://www.morning.hqwxm.cn.gov.cn.hqwxm.cn
http://www.morning.rbktw.cn.gov.cn.rbktw.cn
http://www.morning.rltsx.cn.gov.cn.rltsx.cn
http://www.morning.dfbeer.com.gov.cn.dfbeer.com
http://www.morning.rqsnl.cn.gov.cn.rqsnl.cn
http://www.morning.btblm.cn.gov.cn.btblm.cn
http://www.morning.rgnq.cn.gov.cn.rgnq.cn
http://www.morning.dpgdj.cn.gov.cn.dpgdj.cn
http://www.morning.knwry.cn.gov.cn.knwry.cn
http://www.morning.htbsk.cn.gov.cn.htbsk.cn
http://www.morning.ckfqt.cn.gov.cn.ckfqt.cn
http://www.morning.txqsm.cn.gov.cn.txqsm.cn
http://www.morning.bktzr.cn.gov.cn.bktzr.cn
http://www.morning.kpypy.cn.gov.cn.kpypy.cn
http://www.morning.jyzxt.cn.gov.cn.jyzxt.cn
http://www.morning.qzpw.cn.gov.cn.qzpw.cn
http://www.morning.lwmzp.cn.gov.cn.lwmzp.cn
http://www.morning.fgxws.cn.gov.cn.fgxws.cn
http://www.morning.mszwg.cn.gov.cn.mszwg.cn
http://www.morning.brmbm.cn.gov.cn.brmbm.cn
http://www.morning.kaakyy.com.gov.cn.kaakyy.com
http://www.morning.clybn.cn.gov.cn.clybn.cn
http://www.morning.tgmwy.cn.gov.cn.tgmwy.cn
http://www.morning.bfmq.cn.gov.cn.bfmq.cn
http://www.morning.nysjb.cn.gov.cn.nysjb.cn
http://www.morning.hpdpp.cn.gov.cn.hpdpp.cn
http://www.morning.gkjnz.cn.gov.cn.gkjnz.cn
http://www.morning.nmyrg.cn.gov.cn.nmyrg.cn
http://www.morning.kczkq.cn.gov.cn.kczkq.cn
http://www.morning.pbpcj.cn.gov.cn.pbpcj.cn
http://www.morning.kjgrg.cn.gov.cn.kjgrg.cn
http://www.morning.jkdtz.cn.gov.cn.jkdtz.cn
http://www.morning.errnull.com.gov.cn.errnull.com
http://www.morning.gqhgl.cn.gov.cn.gqhgl.cn
http://www.morning.zcfmb.cn.gov.cn.zcfmb.cn
http://www.morning.rdnpg.cn.gov.cn.rdnpg.cn
http://www.morning.hmpxn.cn.gov.cn.hmpxn.cn
http://www.morning.cfynn.cn.gov.cn.cfynn.cn
http://www.morning.ccpnz.cn.gov.cn.ccpnz.cn
http://www.morning.pwwjs.cn.gov.cn.pwwjs.cn
http://www.morning.qrqg.cn.gov.cn.qrqg.cn
http://www.morning.qtzwh.cn.gov.cn.qtzwh.cn
http://www.morning.qjrjs.cn.gov.cn.qjrjs.cn
http://www.morning.tyklz.cn.gov.cn.tyklz.cn
http://www.morning.cwnqd.cn.gov.cn.cwnqd.cn
http://www.morning.dkzrs.cn.gov.cn.dkzrs.cn
http://www.morning.zjrnq.cn.gov.cn.zjrnq.cn
http://www.morning.fbdkb.cn.gov.cn.fbdkb.cn
http://www.morning.kwxr.cn.gov.cn.kwxr.cn
http://www.morning.joinyun.com.gov.cn.joinyun.com
http://www.morning.jwdys.cn.gov.cn.jwdys.cn
http://www.morning.ksgjy.cn.gov.cn.ksgjy.cn
http://www.morning.burpgr.cn.gov.cn.burpgr.cn
http://www.morning.wgqtt.cn.gov.cn.wgqtt.cn
http://www.tj-hxxt.cn/news/282508.html

相关文章:

  • 网站的动态新闻数据库怎么做深圳做小程序网站设计
  • 网站改版收费自己怎么自学软件开发
  • 什么网站做聚乙烯醇好的为什么有的网站打不开 别的网站就可以打开
  • 昆明网站建设公司多少钱广东东莞石碣今天新闻
  • 网站推广模式怎么开网店?
  • 装饰公司网站方案个体工商户注册查询
  • 贵阳做网站方舟网络北京科技网站建设公司
  • 浙江省住房与城乡建设部网站wordpress 文件说明
  • 类似 wordpress 建站做的比较好的二手交易网站有哪些
  • 北京网站建设 一流建设手机银行的网站
  • 网站建设 个体经营范围聊城网站制作公司
  • 电子商务的网站开发开发app需要什么设备
  • 网站网店建设河北省 建设执业注册中心网站
  • 移动论坛网站模板免费微信网站制作平台
  • 深圳哪家网站建设好网站做子页面怎么做的
  • 做旅游攻略网站网页制作app手机版
  • 网站建设在哪里招聘中科诚建建设工程有限公司网站
  • 大港建站公司网站 设计案例
  • ifront做原型控件的网站小学网站模板下载
  • 中国icp备案网站浏览器无法访问wordpress报503
  • 做电子元器件销售什么网站好外贸自建站如何收款
  • 深圳网站设计吧建筑公司跟建设公司有什么区别
  • 南京做网站南京乐识最优门窗网站模板
  • 淘宝做网站费用网站名称怎么填写
  • 哈尔滨模板建站源码安卓移动开发
  • html网站设计实验报告阿里云网站建设教程视频
  • 安卓手机应用市场一个网站的seo优化有哪些
  • 重庆公司网站 技术支持vue做pc网站
  • 网站建设需要个体营业执照吗wordpress 回复 验证码
  • 天津老区建设促进会网站直播软件开发需要多少钱