![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
IOC容器设计实现及Spring源码分析
文章平均质量分 86
IOC容器设计实现及Spring源码分析
痛冕
成长笔记
展开
-
Spring学习笔记--声明式事务源码
Spring学习笔记–声明式事务源码声明式事务很⽅便,尤其纯注解模式,仅仅几个注解就能控制事务了思考:这些注解都做了什么?好神奇!@EnableTransactionManagement @Transactional@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Import(TransactionManagementConfigurationSelector.class)public @inte原创 2021-05-20 19:03:51 · 185 阅读 · 3 评论 -
Spring学习笔记--源码解析aop代理对象创建流程
Spring学习笔记–源码解析aop代理对象创建流程代理对象创建AOP基础用例准备Bean定义@Componentpublic class LagouBean { public void tech(){ System.out.println("java learning......"); }}Aspect定义package com.lagou;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.原创 2021-05-20 18:50:00 · 167 阅读 · 1 评论 -
Spring学习笔记--事务回顾(事务特性、并发问题、隔离级别、传播行为)
Spring学习笔记–事务回顾(事务特性、并发问题、隔离级别、传播行为)Spring 声明式事务的支持编程式事务:在业务代码中添加事务控制代码,这样的事务控制机制就叫做编程式事务声明式事务:通过xml或者注解配置的⽅式达到事务控制的⽬的,叫做声明式事务事务的概念事务指逻辑上的⼀组操作,组成这组操作的各个单元,要么全部成功,要么全部不成功。从而确保了数据的准确与安全。例如:A——B转帐,对应于如下两条sql语句/*转出账户减钱*/ update account set money=money原创 2021-05-20 17:48:44 · 182 阅读 · 1 评论 -
Spring学习笔记--SpringAOP应用
Spring学习笔记–SpringAOP应用AOP本质:在不改变原有业务逻辑的情况下增强横切逻辑,横切逻辑代码往往是权限校验代码、日志代码、事务控制代码、性能监控代码。AOP相关术语上图描述的就是未采⽤AOP思想设计的程序,当我们红⾊框中圈定的⽅法时,会带来⼤量的重复劳动。程序中充斥着⼤量的重复代码,使我们程序的独⽴性很差。⽽下图中是采⽤了AOP思想设计的程序,它把红框部分的代码抽取出来的同时,运⽤动态代理技术,在运⾏期对需要使⽤的业务逻辑⽅法进⾏增强。AOP术语Joinpoint连接点:它原创 2021-05-20 16:25:14 · 225 阅读 · 1 评论 -
Spring学习笔记--SpringIOC源码(二)
Spring学习笔记–SpringIOC源码(二)lazy-init延迟加载机制原理分析普通 Bean 的初始化是在容器启动初始化阶段执⾏的,⽽被lazy-init=true修饰的 bean 则是在从容器⾥第⼀次进行context.getBean() 时进⾏触发。Spring 启动的时候会把所有bean信息(包括XML和注解)解析转化成Spring能够识别的BeanDefinition并存到Hashmap里供下⾯的初始化时⽤,然后对每个BeanDefinition 进⾏处理,如果是懒加载的则在容器初始原创 2021-05-20 13:33:43 · 124 阅读 · 1 评论 -
Spring学习笔记--SpringIOC源码(一)
Spring学习笔记–SpringIOC源码再查看源码的过程中我们应该遵守定焦原则和宏观原则,抓主线,关注源码结构和业务流程,通过断点、反调、和经验来阅读源码以此来提高培养代码架构思维并深入的理解框架。SpringIOC容器初始化主体流程Spring IoC的容器体系IoC容器是Spring的核⼼模块,是抽象了对象管理、依赖关系管理的框架解决⽅案。Spring 提供了很多的容器,其中 BeanFactory 是顶层容器(根容器),不能被实例化,它定义了所有 IoC 容器 必须遵从的⼀套原则,具体的容原创 2021-05-20 12:37:23 · 232 阅读 · 3 评论 -
Spring学习笔记--高级特性之后置处理器(SpringBean的生命周期)
Spring学习笔记–高级特性之后置处理器Spring提供了两种后处理bean的扩展接⼝,分别为 BeanPostProcessor 和BeanFactoryPostProcessor,两者在使⽤上是有所区别的。工厂初始化(BeanFactory)—> Bean对象在BeanFactory初始化之后可以使⽤BeanFactoryPostProcessor进⾏后置处理做⼀些事情在Bean对象实例化(并不是Bean的整个⽣命周期完成)之后可以使⽤BeanPostProcessor进⾏后置处理做⼀些原创 2021-05-19 21:33:07 · 236 阅读 · 0 评论 -
Spring学习笔记--高级特性之FactoryBean
Spring学习笔记–高级特性之FactoryBeanFactoryBean和BeanFactoryBeanFactory接⼝是容器的顶级接⼝,定义了容器的⼀些基础⾏为,负责⽣产和管理Bean的⼀个⼯⼚,具体使⽤它下⾯的⼦接⼝类型,⽐如ApplicationContext;此处我们重点分析FactoryBeanFactoryBean Spring中Bean有两种,⼀种是普通Bean,⼀种是⼯⼚Bean(FactoryBean),FactoryBean可以⽣成某⼀个类型的Bean实例(返回给我们),也就原创 2021-05-19 15:20:41 · 257 阅读 · 0 评论 -
Spring学习笔记--高级特性之Lazy-init延迟加载
Spring学习笔记–高级特性之Lazy-init延迟加载Lazy-init延迟加载,Bean的延迟加载(延迟创建)ApplicationContext 容器的默认⾏为是在启动服务器时将所有 singleton bean 提前进⾏实例化。提前实例化意味着作为初始化过程的⼀部分,ApplicationContext 实例会创建并配置所有的singletonbean。xml方式启动IOC容器配置延迟加载的方式<bean id="testBean" class="cn.lagou.LazyBean"原创 2021-05-19 14:53:42 · 378 阅读 · 1 评论 -
Spring学习笔记--Spring IOC基础
Spring学习笔记–Spring IOC基础结合之前的手写ioc案例,Spring学习笔记–手写实现 IoC 和 AOPSpring框架IOC实现:bean的定义纯XML(bean信息定义全部配置在XML中)xml+注解 部分bean使用xml定义,部分bean使用注解定义纯注解方式 多有的bean都是用注解来定义不同的bean的定义方式导致了IOC容器BeanFactory中不同的启动方式BeanFactory :通过反射技术来实例化对象并维护对象之间的依赖关系。**xml **原创 2021-05-19 14:30:26 · 181 阅读 · 1 评论 -
Spring学习笔记--手写实现 IoC 和 AOP
手写实现 IoC 和 AOP在手写实现IOC和AOP的案例中,我们使用Servlet接受web项目页面的请求,持久层使用的是JDBC。本章主要是通过手写案例来发现案例中的问题,提出相应的解决思路。银行转账案例案例表结构转账案例代码调用关系转账案例关键代码TransferServletpackage com.lagou.edu.servlet;import com.lagou.edu.service.impl.TransferServiceImpl;import com.lagou原创 2021-05-18 12:18:51 · 177 阅读 · 1 评论 -
Spring学习笔记--概述及核心思想笔记
Spring概述Spring 简介Spring 是分层的 full-stack(全栈) 轻量级开源框架,以 IoC 和 AOP 为内核,提供了展现层 SpringMVC 和业务层事务管理等众多的企业级应⽤技术,还能整合开源世界众多著名的第三⽅框架和类库,已经成为使⽤最多的 Java EE 企业应⽤开源框架。Spring 官⽅⽹址:http://spring.io/我们经常说的 Spring 其实指的是Spring Framework(spring 框架)。Spring 发展历程1997年 IB原创 2021-05-17 17:14:52 · 175 阅读 · 0 评论