丽江市建设局网站,广西建设厅,中山做百度网站的公司名称,wordpress裁剪缩略图1 开始 这是一个总图
下边慢慢看 我们最基础的写的方式就是xml的方式去写 像这样#xff0c;
而我们会通过applicationContext的方式去获得我们的bean #xff0c;我其中一篇博客就写到了applicationContext他的父类就是beanFactory 但是中间的是怎么样处理的呢#xff1f…1 开始 这是一个总图
下边慢慢看 我们最基础的写的方式就是xml的方式去写 像这样
而我们会通过applicationContext的方式去获得我们的bean 我其中一篇博客就写到了applicationContext他的父类就是beanFactory 但是中间的是怎么样处理的呢 因为你获取getbean 的时候要么是bean.class 要么就是这个 bean的名字。所以思考应该是在容器中用map去存放的这个bean。和我们创建bean的一些东西等等 我们可以知道我们可以通过xml和properties 还有yaml定义一些bean定义信息虽然我们很少将bean的定义信息写成properties和还有yaml文件但是 其实这些文件解析成bean的时候会解析成统一的beanDefinition。这时候会有一个解析处理环节。 而这个解析环节有一个解析处理环节就是beanDefinitionReader。然后beanDefiniton会通过反射去实例化。
bean工厂是一个容器的跟接口和入口 反射的代码也是在bean工厂搞的
bean工厂就是一个核心容器 我么需要postProcessor 后置处理器。 我们拿到beanfactory之后进型增强你的那个 还有上边的那个动态修改属性值的问题。
我们就有一个placeholder占位符处理的接口。 在源码中经常会遇到一个populate的方法这个方式其实就是填充属性的 Aware 接口讲解一下
我想让a对象有一个获得当前容器的这样一个功能没那莫我就让他a这个类趋势实现applicationcontextaware接口并实习其中的方法就行如 然后在提供一个get方法就ok了。
比如说我需要知道我的beanname这时候我就可以继承beannameaware
需要框架啥组件就实现对应得aware接口就行。
你做二次开发得时候这时候就需要了 在这个方法里边就会有一个方法 AbstractApplicationContext 有这么一个抽象类其中有一个方法叫reflash。
里边有 各种忽略那么这一块呢还能不仅能忽略接口还能忽略类型。这里有了解即可以后在说。
beanpostpocesser 这里有个前之有个后置两个方法他有一个实现类 走到最后你会看到 所以这一块就是aop 。 这个图就是说明了最简单的bean创建仅仅是bean创建时是怎么可以扩展的那一部分。不完整 1结束 2开始 这个顺序为啥是这样得 人家就是这莫遵循得所以在学tomcat源码得时候好像也是这样一层一层得都去遵循了自己得这个生命周期。
那么在bean初始化时候如上上图我们不是知道他分为几个阶段吗在每个阶段完成之后我们就让他输出他已经完成了。那么这个工作怎么做这就需要 观察者模式了 一些重点得接口 还有一个beanDefinitionRegister 这个主要是对beandefinition增删改查得 。
一个小小得面试题 首先Spring 里面的核心功能是 IOC 容器所谓 IOC 容器呢本质上就是一个 Bean 的容器或者是一个 Bean 的工厂。 它能够根据 xml 里面声明的 Bean 配置进行 bean 的加载和初始化然后 BeanFactory 来生产我们需要的各种各样的 Bean。
BeanFactory 是所有 Spring Bean 容器的顶级接口它为 Spring 的容器定义了一 套规范并提供像 getBean 这样的方法从容器中获取指定的 Bean 实例。 BeanFactory 在产生 Bean 的同时还提供了解决 Bean 之间的依赖注入的能力 也就是所谓的 DI。 FactoryBean 是一个工厂 Bean它是一个接口主要的功能是动态生成某一个类型的 Bean 的实例也就是说我们可以自定义一个 Bean 并且加载到 IOC 容器里面。 它里面有一个重要的方法叫 getObject()这个方法里面就是用来实现动态构建 Bean 的过程。 Spring Cloud 里面的 OpenFeign 组件客户端的代理类就是使用了 FactoryBean 来实现的。 a是由afactiorybean调用getobject生成得
容器创建得时候不会有a 他不会遵循bean得生命周期。 感悟
学习接口得作用以及他设计得思想。
2结束