Spring源码
文章平均质量分 85
少年白头12138
这个作者很懒,什么都没留下…
展开
-
SpringBoot自动配置原理
注:版本为2.5.7首先看代码:@SpringBootApplicationpublic class MyWebApplicationTest { private static final Log logger = LogFactory.getLog(MyWebApplicationTest.class); public static void main(String[] args) { logger.info("ttttttt"); SpringApplication.run(MyWeb原创 2022-01-04 16:47:24 · 1277 阅读 · 0 评论 -
Spring日志与SpringBoot日志
本篇意为说明Spring默认日志实现与SpringBoot默认日志实现。1、日志在这之前,我们应该先了解一些日志框架。具体可以看我这篇随笔:https://www.cnblogs.com/daihang2366/p/15201347.html你得了解JCL、SLF4J、JUL、LogBack。2、Spring5.x在Spring5.x中,默认日志实现为JCL+JUL(其他版本未验证)。证明打开Spring源码,随便找一个类中获取日志Log的属性。进入其getLog方法中:在进入下原创 2021-12-23 17:45:27 · 279 阅读 · 0 评论 -
Spring循环依赖原理
1、现象概述这个现象其实大部分都知道,循环依赖也是网上比较流传Spring的一个问题。比如现在有一个类为Class1,然后其有一个属性为Class2,然后Class2这个类里有一个属性为Class1。当这两个类都是单例的时候,就存在循环依赖的问题了。那么这种情况在Spring管理Bean的时候是如何解决的呢?下面来描述2、代码现象Class1.java@Componentpublic class Class1 { @Autowired private Class2 class2;}原创 2021-10-14 16:43:11 · 160 阅读 · 0 评论 -
Spring回调接口之InstantiationAwareBeanPostProcessor
概述org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessor这个回调接口中有两个方法:@Nullabledefault Object postProcessBeforeInstantiation(Class<?> beanClass, String beanName) throws BeansException { return null;}default boolean post原创 2021-09-28 19:04:58 · 811 阅读 · 0 评论 -
Spring使用有参构造器创建对象autowireConstructor方法
前提你得知道Spring创建Bean的基本流程,我们这里解释的是Spring创建Bean时使用有参构造器去创建Bean的源码解析。autowireConstructor方法这个方法里面就是拿到类的构造器,然后选取到最合适的,然后进而通过构造器来进行初始化。方法总览没想到很好的表达方式,就把注释补充完整,可以直接看注释/*** 根据给定的构造器列表(如果给的构造器参数是空的,那么则会去获取该类的构造器数组),Spring去找出一个最适合的构造器,然后通过这个构造器去实例化对象出来.* b原创 2021-09-27 21:06:56 · 995 阅读 · 0 评论 -
Spring实例化Bean流程解析
注:本文仅解释其实例化过程,属性注入、循环依赖等下一篇解析。首先我们查看示例的代码Demo1.java:@Component("demo1")public class Demo1 {}Main.java:AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();applicationContext.register(AppConfig.class);原创 2021-09-21 16:22:27 · 1026 阅读 · 0 评论 -
Spring中AOP的实现
1、概述它最大的作用是什么?在不更改源代码的情况下,对其原有功能进行增强。使得代码的重用率、开发效率、维护产生极大的方便。运用场景最常见的有:事务、日志、请求拦截等2、使用如何在Spring中使用AOP?1、开启配置@EnableAspectJAutoProxy2、写代理类和被代理的类@Component@Aspectpublic class AopConfig { @PostConstruct public void init(){ System.out.pri原创 2021-09-07 09:18:30 · 310 阅读 · 0 评论 -
Spring阶段性学习:基础、配置解析、回调
1、BeanDefinition是什么?我们都知道Spring会将我们的类new出来以后存放到它自己的容器当中去,然后Spring还需要对我们的类进行其他很多功能的处理,那么Spring的流程是先将需要new的类的信息都保存下来,然后统一的去new然后存放到容器当中.BeanDefinition就是存放类型下的.概览BeanDefinition是一个接口,其他有很多的实现类.我们先看看该接口的代码:public interface BeanDefinition extends Attri原创 2021-08-22 16:21:36 · 378 阅读 · 0 评论 -
谈谈Spring对于@Configuration的Cglib代理
1、现象众所周知,Spring中配置类是用来代替配置文件的,在老一些的日子里面我们使用XML配置,而如今大多使用JavaBean的方式配置。一个简单的配置类如下:@Configuration@ComponentScan("com.dh")public class AppConfig { @Bean public Entity1 entity1(){ return new Entity1(); } @Bean public Entity2 entity2(){ return new原创 2021-08-10 21:23:03 · 376 阅读 · 0 评论 -
谈谈Spring的ImportSelector和ImportBeanDefinitionRegistrar
1、@Import在聊ImportSelector和ImportBeanDefinitioRegistar之前需要先知道@Import。@Import是写在我们的配置类上的,如下:@Configuration@Import({XXX.class,XXX2.class})public class AppConfig {}当Spring扫描我们AppConfig后,就能拿到我们@Import中填的Class,并将其实例化后放到容器当中。2、@Import中的三种类@Import中填入的类可以原创 2021-07-30 17:28:09 · 1449 阅读 · 0 评论 -
谈谈Spring的ApplicationContextAware接口
谈谈Spring的ApplicationContextAware接口现象: 我们写一个类,实现ApplicationContextAware接口,类上再加一个@Component后,运行项目,你会发现在我们实现的setApplicationContext会传进来Spring的ApplicationContext。@Componentpublic class TestMyBeanPostProcess implements ApplicationContextAware { @Override原创 2021-07-23 16:47:10 · 3367 阅读 · 1 评论 -
谈谈Spring的ConfigurationClassPostProcessor
ConfigurationClassPostProcessor1、它是干什么作用的?首先这个类处于的位置:org.springframework.context.annotation.ConfigurationClassPostProcessor它是用来解析我们的配置类的,如果你类上面加入了@Configuration,@CompentScan等,它就会你的这些配置解析出来2、它是如果实现功能的?示例代码public class Main1 { public static void tes原创 2021-07-23 16:45:19 · 315 阅读 · 0 评论