![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spring
WYFVV
这个作者很懒,什么都没留下…
展开
-
Spring AOP源码解析-创建代理对象
一.简介在上一篇文章中,分析了Spring是如何为目标bean筛选合适的通知器。现在通知器选好了,接下来就是通过代理的方式将通知器(Advisor)所持有的所有通知(Advice)织入到bean的某些方法前后,这篇文章就是分析创建代理的过程。二.背景知识2.1 proxy-target-classSpring AOP部分使用JDK动态代理或者CGLIB来为目标对象创建代理(建议尽量...原创 2020-03-16 22:16:37 · 402 阅读 · 0 评论 -
Spring AOP源码解析-拦截器链的执行过程
一.简介在前面的两篇文章中,分别介绍了 Spring AOP 是如何为目标 bean 筛选合适的通知器,以及如何创建代理对象的过程。现在得到了 bean 的代理对象,且通知也以合适的方式插在了目标方法的前后。接下来要做的事情,就是执行通知逻辑了。通知可能在目标方法前执行,也可能在目标方法后执行。具体的执行时机,取决于用户的配置。当目标方法被多个通知匹配到时,Spring 通过引入拦截器链来保证...原创 2020-03-16 17:43:10 · 830 阅读 · 1 评论 -
Spring AOP源码解析-核心组件解析及筛选合适的通知器
一.简介首先,我们先看这篇文章:AOP详解,从这篇文章中回顾了关于AOP的一些专业术语。从这篇文章开始,我将会对Spring AOP部分的源码来进行解析,本文主要分析Spring AOP是如何为目标bean筛选合适的通知器。二.源码分析2.1 AOP入口分析首先,我们要思考一个问题,Spring是如何将AOP和IOC模块整合到一起的?在之前的文章:Bean的生命周期,我们了解到...原创 2020-03-12 00:06:59 · 367 阅读 · 0 评论 -
Spring-Bean的生命周期
一.生命流程要彻底搞清Spring的生命周期,首先要牢牢记住四个阶段。实例化 属性赋值 初始化 销毁源码如下,能证明实例化,属性赋值和初始化这三个生命周期的存在。本文中的Spring源码将会忽略无关部分,便于理解:// 忽略了无关代码protected Object doCreateBean(final String beanName, final RootBeanDefi...原创 2020-03-06 21:36:48 · 258 阅读 · 0 评论 -
Spring IOC源码解析-余下的初始化工作
一.简介大家应该还记得在bean配置时有一个init-method的属性,这个属性的作用是在bean实例化之前调用init-method指定的方法来根据用户进行相应的实例化。我们现在就已经进入了这个方法,首先看一下这个方法的执行位置,Spring中的程序已经执行过了bean的实例化,并且进行了属性的填充,而就在这个时候将会调用用户设定的初始化方法。initializeBean 就是这个方法,我...原创 2020-03-05 16:19:31 · 171 阅读 · 0 评论 -
Spring IOC源码解析-填充属性到bean原始对象
一.简介在这篇文章中,我们将会了解到Spring是如何将配置文件中的属性值填充到bean对象中。对于填充属性这个过程,简单点来说,JavaBean 的每个属性通常都有 getter/setter 方法,我们可以直接调用 setter 方法将属性值设置进去。当然,这样做还是太简单了,填充属性的过程中还有许多事情要做。比如在 Spring 配置中,所有属性值都是以字符串的形式进行配置的,我们在将这...原创 2020-03-05 15:39:34 · 283 阅读 · 0 评论 -
Spring IOC源码解析-创建原始bean对象
一.简介这篇文章是之前一篇文章(创建单例bean的过程)的延续。在上篇文章中,从大体上讲述了doCreateBean方法的过程。今天,详细讲解下这个方法过程中的一个重要调用,即createBeanInstance方法。二.源码分析2.1 创建bean对象的过程protected BeanWrapper createBeanInstance(String beanName, Roo...原创 2020-03-04 21:42:42 · 260 阅读 · 0 评论 -
Spring IOC源码解析-循环依赖的解决方法
一.简介本文,我们将来看一下Spring是如何解决循环依赖问题的。在本篇文章中,首先会介绍下什么是循环依赖,然后介绍下Spring将玄幻依赖分类的情况。最后,进行源码解析。为了更好的解析Spring解决循环依赖的办法,将会从获取bean的方法getBean开始,将这个调用过程梳理一遍,然后在详细分析源码。二.什么是循环依赖2.1概述循环依赖就是循环引用,就是两个或多个bean之间的...原创 2020-02-28 17:00:39 · 564 阅读 · 0 评论 -
Spring IOC源码解析-创建单例bean的过程
一.简介对于实例化好的单例bean,getBean(String)方法并不会再一次去创建,而是从缓存中获取。如果某个bean还未实例化,这个时候就无法命中缓存,此时,就要根据bean的配置信息去创建这个bean了。相较于getBean(String)方法的实现逻辑,创建bean的方法create(String,RootBeanDefinition,Object[])及所调用的方法逻辑更加复杂一...原创 2020-02-28 15:19:56 · 658 阅读 · 0 评论 -
Spring IOC源码解析-获取单例bean
一.简介在这篇文章中,将会详细分析BeanFactory的getBean(String)方法实现细节,但是不会分析它所调用的方法,这些方法会在之后的文章中依次进行分析。二.源码分析2.1 getBean(String)源码public Object getBean(String name) throws BeansException { // getBean 是一个空壳方...原创 2020-02-28 11:34:15 · 295 阅读 · 0 评论 -
Spring+SpringMVC+MyBatis-整合
一.概述SSM框架式Spring,SpringMVC和MyBatis框架的整合,是标准的MVC模式,将整个系统划分为表现层,Controller层,Service层和Dao层四层。使用Spring实现业务对象管理,使用SpringMVC负责请求的转发和视图管理,MyBatis作为数据对象的持久化引擎。Dao层(mapper):数据持久层 (1) Dao层的设计就是先设计Dao的接口...原创 2020-02-21 18:23:47 · 933 阅读 · 0 评论 -
Spring+SpringMVC+MyBatis+SSM项目+SpringBoot-目录(还在更新)
Spring了解Spring IOC实验 XML配置文件(IOC实验总结) 基于注解的依赖注入(IOC实验总结) AOP实验 AOP详解 JDBCTemplate 声明式事务实验 Spring与JavaWeb整合SpringMVCSpringMVC概述及HelloWorld 细节一(HelloWorld运行流程,url-pattern,@RequestMapping,R...原创 2020-02-20 23:22:57 · 596 阅读 · 0 评论 -
Spring-Spring与JavaWeb整合
一.概述Spring与JavaWeb整合时,Spring可以完成的任务有:1)Spring来控制事务(dao-JdbcTemplate)2)所有组件Autowried3)管理数据库...1.1 整合的步骤1.导包2.写配置 1)将所有组件加入到容器中,并能正确获取@Controller:servlet层,目前不能标注在Servlet层(Tomcat启动时会...原创 2020-01-13 14:59:56 · 823 阅读 · 0 评论 -
Spring-声明式事务实验
一.环境搭建导入SQL文件创建一个数据库,数据库中有三张表,分别是客户表(客户名,余额),书籍表(编号,书籍名称,单价)和书籍库存表(编号,库存余额)。导入jar包 编写配置文件,在配置文件中配置JDBCTemplate。 <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springfram...原创 2020-01-12 15:32:55 · 318 阅读 · 0 评论 -
Spring-JDBCTemplate
一.概述为了使JDBC更加易于使用,Spring在JDBC API上定义了一个抽象层,以此建立一个JDBC存取框架。作为Spring JDBC框架的核心,JDBC模板的设计目的是为不同类型的JDBC操作提供模板方法,通过这种方式,可以在尽可能保留灵活性的情况下,将数据库存取的工作量降到最低。可以将Spring的JdbcTemplate看作是一个小型的轻量级持久化层框架,和我们之前使用过的D...原创 2020-01-01 19:14:53 · 320 阅读 · 0 评论 -
Spring-AOP详解
一.什么是AOP?在之前的文章中,提出了这样一个场景,在计算机运行计算方法时添加日志记录。我们刚开始想到的就是在这些方法中添加日志记录,但是这样操作就会导致业务逻辑与辅助功能耦合。接下来我们又提出可以将日志记录作为一个模块,在核心功能运行时,将其加入。这就是AOP要解决的问题。AOP(Aspect Oriented Programming)称为面向切面编程,在程序开发中主要用来解决一些系统...原创 2019-12-30 17:41:40 · 292 阅读 · 0 评论 -
Spring-AOP实验
一.概述AOP:(Aspect Oriented Programming)面向切面编程OOP:(Object Oriented Programming)面向对象编程面向切面编程:基于OOP基础之上的新的编程思想。指在程序运行期间,将某段代码动态的切入到指定方法的指定位置进行运行的这种编程方式。二.AOP场景和JDK动态代理(AOP前奏)怎么理解AOP,现在提出一个场景:计算器运...原创 2019-12-29 15:44:37 · 2037 阅读 · 0 评论 -
Spring-基于注解的依赖注入(IOC实验总结)
1.声明Bean的注解@Component注解,这个更多对应的是一个组件的概念,如果Bean不属于哪个层,可以使用这个注解标注。 @Controller注解,对应的是控制层即MVC设计模式中的控制层,其作用是接收用户请求,根据请求调用不同的Service取数据,并根据需求对数据进行组合,包装返回给前端。 @Service注解,对应的是服务层即Service层,其作用是对单条/多条SQL语句...原创 2019-12-10 21:10:13 · 1731 阅读 · 0 评论 -
Spring-IOC实验
一.概述IOC(Inversion Of Contril):控制反转控制:资源的获取方式,有主动式(要什么资源都自己创建即可)和被动式(资源的获取不是我们自己创建,而是交给一个容器来创建和设置)。举例说明主动式和被动式:主动式://资源是自己创建的BookServelt{ BookServelt bs=new BookServelt(); AirPlane ap=n...原创 2019-12-02 09:40:09 · 1969 阅读 · 0 评论 -
Spring-了解Spring
一.概述Spring是一个开源框架。Spring为简化企业级开发而生的,使用Spring,JavaBean就可以实现很多以前要靠EJB才能实现的功能。同样的功能,在EJB中要通过繁琐的配置和复杂的代码才能实现,而在Spring中却非常优雅和简洁。Spring是一个IOC和AOP容器的框架。Spring的优良特性:非侵入式:基于Spring开发的应用中的对象可以不依赖于Spring的...原创 2019-11-23 10:38:53 · 192 阅读 · 0 评论