Spring系列
文章平均质量分 81
*King*
这个作者很懒,什么都没留下…
展开
-
Spring源码解读(9)---解析配置类
Spring源码解读(9)—解析配置类解析配置类1、在启动Spring时,需要传入一个AppConfig.class给ApplicationContext,ApplicationContext会根据AppConfig类封装为一个BeanDefinition,这种BeanDefinition就是配置类BeanDefinition2、ConfigurationClassPostProcessor中会把配置类BeanDefinition取出来3、构造一个ConfigurationClassParser用来原创 2021-12-20 15:21:38 · 551 阅读 · 0 评论 -
Spring源码解读(8)---启动过程源码解析
Spring源码解读(8)—启动过程源码解析Spring启动Spring启动就是构造ApplicationContext对象及调用refresh方法的过程Spring启动主要做了以下几件事情:构造一个BeanFactory对象解析配置类,得到BeanDefinition,并注册到BeanFactory中解析@CompanentScan注解,此时会完成扫描解析@Import注解解析@Bean注解。。。因为ApplicationContext还支持国持化,所以还需初始化MessageS原创 2021-12-20 15:01:26 · 676 阅读 · 0 评论 -
Spring源码解读(7)---推断构造方法解析
Spring源码解读(7)—推断构造方法解析一、Spring推断构造方法在Spring中的一个bean需要实例化得到一个对象时就需要用到构造方法。一般情况下,一个类只有一个构造方法,要么是无参的构造方法,要么是有参的构造方法:如果只有一个无参的构造方法,那么实例化就只能使用这个构造方法,如果只有一个有参的构造方法,那么实例化时能使Spring会根据构造方法的参数信息去寻找bean,然后传给构造方法。那么如果有多个构造方法呢?Spring在进行实例化之前该如何去确定使用哪个构造方法?如果开发者指原创 2021-12-20 14:38:35 · 735 阅读 · 1 评论 -
Spring源码解读(6)---循环依赖底层源码解析
循环依赖就是A对象依赖了B对象,B对象又依赖了A对象在Spring中,一个对象并不是简单的new出来的,而是会经过一系列的Bean的生命周期。在Spring中出现循环依赖的场景很多,有些场景Spring自动帮我们解决了,而有些场景需要我们自己去解决。Spring中Bean的生命周期被Spring管理的对象叫做Bean,Bean的生成步骤:Spring扫描class得到BeanDefinition根据得到的BeanDefinition去生成Bean首先根据class推断构造方法根据推断出来的构原创 2021-11-17 20:42:43 · 703 阅读 · 0 评论 -
Spring源码解读(5)---依赖注入源码解析
Spring中依赖注入的方式分为两种:手动注入、自动注入手动注入在XML中定义Bean时,就是手动注入,手动注入分为两种:set方法注入、构造方法注入下面这种是通过set方法进行注入<bean name="userService" class="com.example.spring.UserService"> <property name="orderService" ref="orderService"/></bean>下面这种是通过构造方法进行注入原创 2021-11-17 09:54:12 · 755 阅读 · 0 评论 -
Spring源码解读(4)---Bean生命周期源码解析
一、Bean的生命周期流程:二、Spring扫描流程:三、Bean的生成过程:1、生成BeanDefinitionSpring在启动的时候会进行扫描,会先调用:org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider#scanCandid ateComponents(String basePackage) 扫描某个包路径,并得到BeanDefinition的Set集合。Spring扫描流原创 2021-11-10 19:02:24 · 636 阅读 · 0 评论 -
Spring源码解读(3)---底层核心概念解析
1、BeanDefinitionBeanDefinition表示Bean定义,BeanDefinition中存在很多属性用来描述一个Bean的特点。比如:class:表示Bean类型scope:表示Bean作用域,单例或原型lazyInit:表示Bean是否是懒加载initMethodName:表示Bean初始化时要执行的方法destroyMethodName:表示Bean销毁时要执行的方法等。。。Spring中经常会用到的申明式定义Bean的方式:、@Bean、@Component(@原创 2021-11-10 18:56:09 · 779 阅读 · 0 评论 -
Spring源码解读(1)——源码下载及编译
一、源码下载流程下载源码:git clone --branch v5.2.8.RELEASE https://gitee.com/Z201/spring-framework.git二、源码编译1、修改settings.gradle文件repositories { gradlePluginPortal() maven { url 'https://maven.aliyun.com/repository/public' } maven { url 'https://repo.sprin原创 2021-10-25 18:49:29 · 294 阅读 · 0 评论 -
Spring-5.2.8源码系列1
1、IDEA里面下载Kotlin插件2、gradle安装->配置gradle环境变量,新增GRADLE——HOME3、下载spring源码1、源码下载地址:git clone --branch v5.2.8.RELEASE https://gitee.com/Z201/spring-framework.git2、修改settings.gradle文件,增加aliyun下载地址repositories { gradlePluginPortal() maven { url 'htt原创 2020-12-13 23:10:47 · 411 阅读 · 0 评论 -
Spring学习
1、Spring三大特性DI(依赖注入),IOC(控制反转),AOP(面向切面编程)(1)DI:Dependency Injection,依赖注入。依赖注入有三种方式:1.接口注入2.setter注入:将sessionFactory注入到UserDao的sessionFactory属性,这就是setter注入...原创 2020-10-21 15:17:29 · 436 阅读 · 0 评论 -
Spring自定义注解和Aop实现事务框架
事务的分类:1、编程事务:(1)获取当前项目中的事务管理器DataSourceTransactionManager(2)可以采用事务管理器实现提交/回滚事务操作缺点:代码非常重复优点:扩展性好2、声明事务:只需要在方法上加一个注解@Transaction注意@Transaction失效问题:不要try业务逻辑如果try的情况下,则aop不会捕获到异常,所有就不会回滚事务。如果需要try的情况下必需要catch做手动回滚操作。TransactionAspectSupport.current原创 2020-09-13 11:05:37 · 632 阅读 · 3 评论