Spring源码
文章平均质量分 80
分析+手写
学nm个锤子
Qtmd
展开
-
图解Spring事务原理
Spring 事务管理基于 AOP 来实现,主要是统一封装非功能性需求。一,数据库事务原理详解1、事务基本概念事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。特点:事务是恢复和并发控制的基本单位。事务应该具有 4 个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为 ACID 特性。原子性(Automicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。一致性(Consistency)。事务必须是使数据库从一原创 2021-02-07 23:25:36 · 463 阅读 · 0 评论 -
Spring注解开发
@author yinhuidong@createTime 2020-05-12-10:48文章目录一,容器1.组件注册1)@Configuration 和 @Bean2)@RunWith 和 @ContextConfiguration3)@ComponentScan4)@Scope 设置组件作用域5)@Lazy6)@Conditional7)@Import8)ImportSelector9)ImportBeanDefinitionRegistrar10)FactoryBean2.生命周期1)@Bea原创 2020-09-09 22:48:16 · 221 阅读 · 0 评论 -
springmvc使用篇
文章目录一,springmvc基本概念1.三层架构2.MVC模型3.springmvc是什么4.springmvc和struts2的优劣对比二,Springmvc入门1.入门案例需求:web.xmlspringmvc.xml2.入门案例流程分析3.请求响应流程4.案例中涉及的组件5.RequestMapping注解三,请求参数的绑定1.绑定的机制2.支持的数据类型3.使用要求4.代码示例5.请求参数乱码问题6.关于静态资源处理7.关于get请求8.自定义类型转换器代码:9.使用servletAPI对象作为方原创 2020-09-09 22:04:12 · 416 阅读 · 0 评论 -
spring基本使用篇
文章目录一,Spring概述1.spring是什么?2.spring的优势3.spring体系结构二,ioc的概念和作用1.程序的耦合和解耦2.解决耦合的思路3.工厂模式解耦代码:持久层服务层BeanFactory配置文件和测试类4.控制反转**Inversion Of Control**由解耦引发的问题三,使用spring的ioc解决程序的耦合1.基于xml形式的装配步骤代码2.基于xml装配ioc的细节1)BeanFactory 和 ApplicationContext 的区别2)Application原创 2020-09-09 21:58:53 · 338 阅读 · 0 评论 -
图解MVC
一,SpringMVC执行流程Web 容器启动时会通知 Spring 初始化容器(加载Bean 的定义信息和初始化所有单例 Bean),然后 SpringMVC 会遍历容器中的 Bean,获取每一个 Controller 中的所有方法访问的 url,然后将 url 和 Controller 保存到一个 Map中;这样就可以根据 Request 快速定位到 Controller,因为最终处理 Request 的是Controller 中的方法,Map 中只保留了 url 和 Controller 中的对应关原创 2021-02-05 17:44:59 · 307 阅读 · 0 评论 -
图解AOP
我写这篇博客的底层逻辑是什么?顶层设计在哪?最终交付价值是什么?过程的抓手在哪里?如何保证结果的闭环?我比别人的亮点在哪里?优势在哪里?我的思考和沉淀在哪里?我有形成自己的方法论么?我这个博客换别人来发是否会一样?全篇是如何做到对齐拉通的?一,回首AOPAOP 是 OOP 的延续,是 Aspect Oriented Programming 的缩写,意思是面向切面编程。可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。AOP设计模式孜孜不倦追求的是调用者和被调原创 2021-02-03 17:32:45 · 459 阅读 · 0 评论 -
ioc创建过程源码解读
Spring的ioc容器创建的核心都在这个refresh()里面。这里面有12个方法,完成了ioc容器的刷新工作。1.prepareRefresh()刷新前的预处理1.initPropertySources()初始化一些属性设置,子诶自定义个性化的属性设置方法2.getEnvironment().validateRequiredProperties()检验属性的合法等3.this.earlyApplicationEvents = new LinkedHashSet<>()保存容原创 2021-01-05 14:12:56 · 182 阅读 · 0 评论 -
spring组件源码分析
1.BeanPostProcessorbean 的后置处理器,他是Spring的核心组件之一。执行在Bean 的init()执行前后。可以对Bean做一些初始化和增强工作。@Component@Slf4jpublic class MyBeanPostProcessor implements BeanPostProcessor { @Override public Object postProcessBeforeInitialization(Object bean, String b原创 2021-01-04 22:13:48 · 125 阅读 · 0 评论 -
Spring事务底层源码解读
1.点击进入@EnableTransactionManagement2.这个注解里面给容器中导入了一个组件TransactionManagementConfigurationSelector3.这个组件里面的selectImports()给容器中导入了两个组件 3.1 AutoProxyRegistrar 这个类的registerBeanDefinitions()方法实际上就是给容器中导入AOP的组件 AopConfigUtils.registerAutoProxyCreatorIfNeces原创 2021-01-04 17:44:37 · 273 阅读 · 0 评论 -
深入理解aop底层源码
开启aop功能的注解:@EnableAspectJAutoProxy点进去这个注解:@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Import(AspectJAutoProxyRegistrar.class)public @interface EnableAspectJAutoProxy { boolean proxyTargetClass() default false; boolea原创 2021-01-03 19:08:38 · 173 阅读 · 0 评论 -
Spring的三级缓存与循环依赖
一,spring4版本与spring5版本aop的执行顺序依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> <!--原创 2020-11-29 19:41:53 · 975 阅读 · 1 评论 -
Spring底层源码分析之容器创建精细分析
1.概述Spring读取配置文件创建容器的时候,实际上,底层是执行了三个方法:this();register();refresh();核心就在refresh()方法里面。1.1Spring容器在启动的时候,先会保存所有注册进来的Bean的定义信息;1)、xml注册bean;2)、注解注册Bean;@Service、@Component、@Bean、xxx1.2Spring容器会合适的时机创建这些Bean1)、用到这个bean的时候;利用getBean创建bean;创建好以后保存在容原创 2020-08-23 21:59:44 · 291 阅读 · 0 评论 -
图解IOC-DI
我写这篇博客的底层逻辑是什么?顶层设计在哪?最终交付价值是什么?过程的抓手在哪里?如何保证结果的闭环?我比别人的亮点在哪里?优势在哪里?我的思考和沉淀在哪里?我有形成自己的方法论么?我这个博客换别人来发是否会一样?全篇是如何做到对齐拉通的?一,回首IOC和DIIOC(Inversion of Control)控制反转:所谓控制反转,就是把原先我们代码里面需要实现的对象创建、依赖的代码,反转给容器来帮忙实现。那么必然的我们需要创建一个容器,同时需要一种描述来让容器知道需要创建的对象与对象的关系。这个描述最原创 2021-02-02 21:25:53 · 374 阅读 · 0 评论 -
300行代码模拟spring核心原理
一,实现思路1,配置阶段配置web.xmlDispatcherServlet设定init-paramcontextConfigLocation=classpath:application.xml设定url-pattern/*配置Annotation@Controller @Service @Autowrited @RequestMapping2,初始化阶段调用init方法加载配置文件IOC容器初始化MAP扫描相关的类sca原创 2021-02-01 20:38:28 · 149 阅读 · 0 评论