外贸网站建设解决方案,wordpress文章如何调整字体,建设机械网站案例分析,wordpress 文章简介什么是spring#xff1f;
Spring的基础知识铺垫
IOC AOP-Spring-容器-生态
先说你的认知#xff0c;总-分结构 spring是一个基础的框架#xff0c;同时提供了Bean的容器#xff0c;用来方便装载具体的Bean对象#xff0c;之前在使用对象的时候必须自己new
Spring的基础知识铺垫
IOC AOP-Spring-容器-生态
先说你的认知总-分结构 spring是一个基础的框架同时提供了Bean的容器用来方便装载具体的Bean对象之前在使用对象的时候必须自己new而现在只要告诉容器有哪些对象他会帮我们创建好并且维护好整个的生命周期。我们在spring的基础上还有SpringBoot、SpringCloud都是在此基础上。 分 1、什么是IOC什么是AOP IOC表示控制反转原来我们需要自己去创建对象并且交由容器去管理控制对象AOP表示面向切面编程跟业务逻辑无关的代码能通过AOP来实现比如说工作中的日志、事务管理都是通过AOP来实现的。也就是说具体的业务逻辑不变扩展的时候通过AOP的声明通知、具体方法的前置后置Around等添加与业务无关的代码。 2、IOC、AOP如何实现生命周期、循环依赖
Spring加载注解和配置文件概述
1、Spring容器简介
Spring中有一个容器容器中间有多个map对象
2、Spring加载注解和配置文件
spring源码的xml与注解转换成了BeanDefinition对象 3、在此中间考虑了扩展性增加了接口 约束规范
BeanDefinitionReader只要实现了这个接口就不限于xml、注解、还能增加properties等等去实现bean的定义信息 题外话抽象类与接口的区别 抽象是自下向上接口是自上向下
4、spring的扩展接口-BeanFactoryPostProcessor
首先要从BeanDefiniton直接到创建Bean对象首先想到的思路是反射。 反射 1、获取对象Class clazzclass.forName 2、获取构造器Constructor ctorclazz.getDeclareConstructor() 3、创建对象 ctor.newInstance() 但是理论上直接BeanDefiniton通过反射创建Bean对象不就能解决问题了吗别着急上面图片中的xml文件的property属性中有若干占位符需要替换进去需要解决这个问题就不能直接用反射。 当我们要创建BeanDefinition后创建bean对象之前需要替换jdbc.username这些参数需要PostProcessor增强器提供某些额外的扩展功能 上面说的针对的操作对象不同 BeanFactory代表访问Spring Bean容器的根接口 Bean代表对象 postProcessor处理了占位符比如刚刚说的jdbc.username生成完整的BeanDefinition对象
5、Bean的生命周期
从对象的创建到销毁的过程粗略来说就是Bean对象的创建、使用、销毁。
第一步实例化在堆空间中申请空间此时对象的属性值一般是默认值反射创建对象的过程createBeanInstance 发现下面的三步不就是反射的三步骤吗获取class对象获取构造器newInstance。
第二、三步初始化(自定义属性赋值populateBean)、容器对象属性赋值(Aware就是一个标志实现接口能在统一的方法进行处理invokeAwareMethods)
Spring中的Bean对象按照使用者分为几类
1.我们的自定义对象2.容器对象不是我们要用的是容器在创建过程中要使用的对象例如BeanFactory、ApplicationContext、Environment理论上到此前三步搞定对象的创建和属性的赋值都完成了就做了new一个对象然后set参数对象能拿来使用了但是注意spring要考虑扩展性。 第四步postProcessor-做Bean对象的扩展实现
前置方法什么都没有 后置方法一路点下去 所以结论AOP其实就是IoC整体流程Bean生命周期里的一个扩展点 第五步InitializingBean——执行初始化方法 至此图上的7个步骤都处理结束接着就能使用Bean对象 使用对象 context.getBean()
销毁Bean对象不用 我们开发用不到销毁容器的代码所以不用管