spring
文章平均质量分 79
将spring源码阅读过程中遇到的一些问题及感悟记录下来
tszxlzc
这个作者很懒,什么都没留下…
展开
-
spring Conditional是怎么生效的
平时看spring源码中经常用到Conditional这个注解,今天来看一下他是怎么生效的其实我是发现Conditional注解是在ConditionEvaluator类的shouldSkip方法中调用了org.springframework.context.annotation.ConditionEvaluator#shouldSkipshouldSkip方法有个枚举类型的参数ConfigurationPhase, PARSE_CONFIGURATION 是标示配置解析阶段;REGISTER_BE原创 2020-07-01 21:39:15 · 297 阅读 · 0 评论 -
@Autowired 注入时配合@lazy是怎么起作用的
业务代码如下@Servicepublic class OrderFacadeImpl implements OrderFacade { // 通过Autowired 延迟注入bean @Autowired @Lazy private XJClient xJClient;注入的入口获取OrderFacadeImpl bean时会通过org.spring...原创 2020-02-26 23:06:14 · 8909 阅读 · 0 评论 -
Spring 循环依赖如何解决
循环依赖是什么?Bean A 依赖 B,Bean B 依赖 A这种情况下出现循环依赖。Bean A → Bean B → Bean A更复杂的间接依赖造成的循环依赖如下。Bean A → Bean B → Bean C → Bean D → Bean E → Bean A循环依赖会产生什么结果?当Spring正在加载所有Bean时,Spring尝试以能正常创建Bean的顺序去创...转载 2020-02-26 21:20:06 · 477 阅读 · 0 评论 -
springboot 事务aop自动配置
自动配置类org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration配置类代码不贴了,但配置类中有个重要的注解是一定要的@EnableTransactionManagement@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTI...原创 2020-02-11 22:10:57 · 531 阅读 · 0 评论 -
spring 循环依赖
循环依赖的三种情况(1) 构造注入,循环依赖不能够解决(2) scope为singleton的set 注入注入,循环依赖能够解决(3) scope为prototype的set 注入注入,循环依赖不能够解决org.springframework.beans.factory.support.DefaultSingletonBeanRegistry#getSingleton的三级缓存解释为什么...原创 2020-02-04 20:22:39 · 115 阅读 · 0 评论 -
问afterPropertiesSet和初始化方法那个先执行
背景:InitializingBean 接口有个afterPropertiesSet方法用来在设置完所有bean属性后调用bean配置中有个init-method的配置问 这两个方法的执行顺序去源码中看方法org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#initializeBean...原创 2019-06-14 15:30:47 · 7271 阅读 · 1 评论 -
spring boot自动化配置druid + mybatis
先添加maven配置 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId&g...原创 2019-04-08 14:51:48 · 539 阅读 · 0 评论 -
spring boot EnableConfigurationProperties ConfigurationProperties 怎么配合使用的
先看我的demo实现第一步: 配置ConfigurationProperties属性@ConfigurationProperties(prefix = "redis.proxy")@Getter@Setterpublic class RedisProperties { /** 服务器列表*/ private List&lt;String&gt; configServerList;...原创 2019-03-06 21:36:58 · 819 阅读 · 0 评论 -
spring boot 怎么选择启动web类型
从springApplication构造方法开始@SuppressWarnings({ "unchecked", "rawtypes" }) public SpringApplication(ResourceLoader resourceLoader, Class&lt;?&gt;... primarySources) { this.resourceLoader = resourceL...原创 2019-02-27 09:04:47 · 787 阅读 · 0 评论 -
spring boot 自动配置原理:找到不同组件的配置文件、配置配置文件的属性文件
spring boot 默认会配置的配置文件 SpringBootApplication注解是程序入口@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@SpringBootConfiguration@EnableAutoConfiguration //Sp...原创 2019-03-05 09:15:01 · 460 阅读 · 0 评论 -
Spring源码解析 – @Configuration配置类是怎么生效的,并将bean解析到spring容器中
首先被@Configuration注解的类是由ConfigurationClassPostProcessor bean后处理器来处理的,下面看一下ConfigurationClassPostProcessor bean后处理器是怎么被加载到的,下面时序图说明spring容器从启动倒注册ConfigurationClassPostProcessor bean后处理器的过程2.Configura...原创 2019-03-04 13:59:33 · 2631 阅读 · 0 评论 -
ApplicationContextAware的setApplicationContext方法是什么时候执行的
ApplicationContextAware的setApplicationContext方法时什么时候执行的可以肯定的是在从容器中getbean的过程中调用的,简单说下几个主要流程getbean到调用bean后处理器 getbean的流程参见下图,主要参考标红字体部分 从图中可以看出,最后会调用initializeBeanf方法又会调用applyBeanPostProcesso...原创 2018-09-16 10:00:08 · 16690 阅读 · 2 评论 -
spring源码分析(一)lazy-init 在Spring中是怎么控制加载的
lazy-init为false,spring容器启动时进行预实例化lazy-init为true,spring容器启动时懒加载拥有改属性的bean,不进行预实例化以下源码可以重点看注释部分IOC阶段,将bean的配置信息解析成BeanDefinition,并放入map中解析BeanDefinition的方法org.springframework.beans.factory.xml.Bean...原创 2019-01-16 11:30:17 · 359 阅读 · 0 评论