摘要:SpringMVC的原理 加载的过程 关于加载,在SpringIOC的加载过程中,并不会直接将HandlerMapping等组件给加载进去,而是在第一次请求的时候,进行初始化 SpringMVC核心类,DispatcherServlet的类图 关于DispatcherServlet的初始化过程:由H
        
阅读全文
 
    
        
        
摘要:静态代理、动态代理和CGLIB 动态代理和CGLIB都是运行时构建代理对象,动态代理通过反射的方式,CGLIB通过java字节码织入继承父类的方式实现 静态代理 静态代理的核心在于,代理类和被代理的类实现同一个接口 public interface IUserService { void save(
        
阅读全文
 
    
        
        
摘要:getBean方法会调用到 AbstractBeanFactory 的 doGetBean() 方法中去。下面看看 AbstractBeanFactory 的类图结构 一、AbstractBeanFactory doGetBean()方法 这个代码块比较主要点在 getSingleton() 方法上
        
阅读全文
 
    
        
        
摘要:Spring事务有7种传播行为:	PROPAGATION_REQUIRED:Spring默认的类型,依赖型,事务之间互相依赖的,内层与外层共用一个事务(内层事务加入外层事务)	PROPAGATION_SUPPORTS:外层有事务,支持内层无事务	PROPAGATION_MANDATORY:强制传播,
        
阅读全文
 
    
        
        
摘要:AbstractApplicationContext.invokeBeanFactoryPostProcessors() 代码块中,让 PostProcessorRegistrationDelegate 类去执行实现 postProcessBeanFactory() 方法的逻辑👇 protecte
        
阅读全文
 
    
        
        
摘要:在SpringIOC获取到BeanFactory之后,需要为BeanFactory初始化一些属性,因为此时BeanFactory中只有最基本的BeanDefinition信息,还没有解析BeanDefinition相关的工具,所以在这一步中Spring将SpEL解析器、属性编辑器、Bean后置处理器
        
阅读全文
 
    
        
        
摘要:在 AbstractApplicationContext.refresh(); 的过程中,第二步为获取BeanFactory -> obtainFreshBeanFactory()。在这个方法中,Spring先创建了BeanFactory,然后通过读取XML配置文件(或者扫描Java类)的方式初始化
        
阅读全文
 
    
        
        
摘要:Spring核心IOC源码解读 前言:Spring IOC容器是Spring核心的模块,阅读源码了解它的运行机制,可以更深刻地理解Spring中bean的生成原理、生命周期等。更可以了解各个Spring中接口的作用,对其理解并加以运用。 使用XML文件的方式创建SpringBean容器 ClassP
        
阅读全文
 
    
        
        
摘要:Spring的初衷 简化系统的复杂性; 使用依赖注入降低系统耦合度,减少开发者对对象的维护; 提供切面编程,将模块组件化,而非代码直接调用; 提供特定模块的模板,避免开发者写重复代码; 利于测试; Spring Bean的装配 三种装配方式:XML、JavaConfig、自动装配 XML通过XML文
        
阅读全文
 
    
        
        
摘要:. 1.1 init(初始化) 在第一次发出请求时,会调用HttpServletBean 的init()方法 org.springframework.web.servlet.HttpServletBean.init() //读取配置文件,初始化等操作 org.springframework.web.
        
阅读全文
 
    
        
        
摘要:啥也不说先贴两个代码: 一:MVC层配置 二、关于数据层MyBatis需要配置pom新增依赖:
        
阅读全文
 
    
        
        
摘要:一、事务相关: 1.Spring事务基于Spring AOP切面编程; 2.AOP基于代理模式,得到需要开启事务的代码的代理对象; 3.而没有开启事务的Service方法里调用了开启事务 @Transactional 的方法时,整个代码是不会开启事务的,原理还是代理模式插入事务的依据是最外层的注解;
        
阅读全文