spring源码
文章平均质量分 79
打分几楼MOTO
这个作者很懒,什么都没留下…
展开
-
配置文件配置Map及List
通过上面的配置可知,一般的单个的值是使用field:value的形式配置的,而List类型的值则是使用多个-value进行配置的,而Map类型的值,则是使用field : key : value进行配置的,可以配置多个key:value。优先读取properties文件,如果properties文件中没有再去读yml文件。properties优先级会高一些,相同名称的配置,会将yml内的配置覆盖掉。介绍一下springBoot中的两种文件配置方式中数组的使用,也就是集合。原创 2023-02-11 18:24:38 · 944 阅读 · 1 评论 -
jdk和cglib动态代理
jdk中为实现代理提供了支持,主要用到2个类:java.lang.reflect.Proxy这是jdk动态代理中主要的一个类,里面有一些静态方法会经常用到,我们来熟悉一下:newProxyInstance方法这个方法先为指定的接口创建代理类,然后会生成代理类的一个实例,最后一个参数比较特殊,是InvocationHandler类型的,这个是个借口如下:上面方法会返回一个代理对象,当调用代理对象的任何方法的时候,会就被接口的方法处理,所以主要代码需要卸载方法中,稍后会有案例细说。getInv原创 2022-08-14 15:00:55 · 175 阅读 · 0 评论 -
Spring监听器
/声明早期的监听器和事件,不需要手动调用publishEvent protected void prepareRefresh() {//设为激活状态,只有此状态,才能getBean this . active . set(true);//下面两个方法是配合使用的,如果一个类重新了该方法,在该方法中设置了必须的环境变量 //getEnvironment().setRequiredProperties("necessary") initPropertySources();...原创 2022-08-14 12:12:02 · 425 阅读 · 0 评论 -
Spring循环依赖解决
只在循环依赖的情况下在实例化后创建动态代理:如何判断当前是不是循环依赖:singletonsCurrentlyInCreation集合。为初始化对象创建动态代理,将这个代理对象放到二级缓存里面。正常情况下(正常的bean)会在初始化之后创建动态代理。...原创 2022-08-13 23:03:13 · 181 阅读 · 0 评论 -
Mybatis源码介绍
DefaultSqlSessionFactory#openSessionFromConnectionorg.apache.ibatis.session.Configuration#newExecutor()当调用里面的某个方法时DefaultSqlSession#selectOne(java.lang.String, java.lang.Object)org.apache.ibatis.plugin.Plugin#invokeCachingExecutor#query()MappedStateme原创 2022-07-31 19:09:45 · 338 阅读 · 0 评论 -
SpringIoc容器源码分析
BeanDefinitionBeanDefinitionReader实例化:在堆中开闭一块内存空间,属性都是默认值初始化:给属性完成赋值操作SpringIOC的源码深入学习类加载成Bean大致可以分为两大步将类解析成Bean定义将Bean定义创建成一个成熟的Beannew AnnotationConfigApplicationContext(xxxxx.class)AnnotationConfigApplicationContext#this():构造方法调用子原创 2022-07-24 21:25:33 · 390 阅读 · 0 评论 -
Spring源码整体脉络介绍
/实例化instanceWrapper=createBeanInstance(beanName,mbd,args);try{//填充属性populateBean(beanName,mbd,instanceWrapper);//初始化,在这里会调用一部分Aware方法exposedObject=initializeBean(beanName,exposedObject,mbd);}=null){}else{原创 2022-07-23 17:52:52 · 530 阅读 · 0 评论 -
SpringBoot启动流程源码分析
获取启动类根据启动类加载IOC容器获取web应用类型spring.factories读取了对外扩展的ApplicationContextInitializer,ApplicationListener读取ApplicationListener监听器将main方法所在的类放入mainApplicationClass记录启动开始事件开启handless发布事件封装命令行参数ApplicationArguments读取环境配置信息第一步获取并启动监听器第二步Demo。......原创 2022-07-20 01:57:46 · 591 阅读 · 1 评论 -
Spring源码之Environment源码分析.md
PropertyResolver接口:提供属性访问功能,解析${…}ConfigurablePropertyResolver:继承自PropertyResolver,主要提供属性类型转换(基于org.springframework.core.convert.ConversionService)功能getConversionService:返回对属性执行类型转换时使用的{@link ConfigurableConversionService}。返回的转换服务的可配置性质允许方便地添加和删除单个{@code C原创 2022-07-08 14:24:28 · 522 阅读 · 0 评论 -
利用Aop对排序字段,排序方式及搜索内容进行过滤,防止sql注入
利用Aop对排序字段,排序方式及搜索内容进行过滤,防止sql注入原创 2022-06-13 18:06:57 · 387 阅读 · 0 评论 -
Aop的相关介绍
Spring框架一般是基于AspectJ实现AOP操作基于注解方式实现(使用)切入点表达式可以对相同的切入点表达式做一个抽取如果有多个增强类对同一个方法进行增强,设置增强类优先级注意:需要在启动类上增加@EnableAspectJAutoProxy注解...原创 2022-06-07 17:24:57 · 92 阅读 · 0 评论 -
spring.factories加载原理以及自定义EnvironmentPostProcessor
目录spring.factories加载原理1. SpringApplication的构造方法1.1 SpringApplication#getSpringFactoriesInstances1.1.1SpringFactoriesLoader#loadFactoryNames-->loadSpringFactories1.1.2 createSpringFactoriesInstances自定义EnvironmentPostProcessor疑问:如何让自定义的En...原创 2022-05-14 23:55:07 · 1546 阅读 · 0 评论 -
@Value的几个特殊用法
目录默认值static变量变量类型基本数据类型数组集合类ListSetMapEL高端玩法注入beanbean的变量和方法静态类逻辑运算${}和#{}的区别${}#{}默认值比如有这样一个需求:如果配置了系统属性,userName就用配置的属性值。如果没有配置,则userName用默认值nieyp。错误用法:@Value(value = "${susan.test.userName}")private S...转载 2022-04-16 17:18:38 · 3034 阅读 · 0 评论 -
Spring-如何自定义扫描包下面的接口
目录第一步先介绍基于正常的扫描包的流(ConfigurationClassParser是如何扫描包)1.invokeBeanFactoryPostProcessors2.扫描一个包下的所有的class3.是否设置了过滤器(这是一个大坑)match逻辑4.判断是否符合候选组件条件针对上述过程分析思路代码演示 第一步先介绍基于正常的扫描包的流(ConfigurationClassParser是如何扫描包)1.i...原创 2022-04-12 16:23:57 · 1821 阅读 · 0 评论 -
Springboot---spring.factories
概述在公司"统一配置中心"项目的开发过程中,需要把开发的客户端的代码打成jar包放到客户端,但是方法一直进不去即客户端启动时并没有jar包中的配置类加载到IOC容器中.开发过程中的疑问:明明已经加了@Configuraion为什么方法进不去,IOC容器中没有这些bean针对上述问题,可以使用spring.factories解决...原创 2022-03-24 11:33:01 · 791 阅读 · 0 评论 -
Spring及SpringBoot常用注解
1.@Scope:设置组件的作用域@Configuration@Import({Colour.class, Red.class,MyImportSelector.class,MyImportBeanDefinitionRegistrar.class})public class MainConfig { /* ConfigurableBeanFactory#SCOPE_PROTOTYPE prototype 多实例 * IOC容器启动并不会去调用方法创建对象放在容原创 2022-03-24 00:13:40 · 686 阅读 · 0 评论 -
Springboot基于@Conditional的衍生注解
@ConditionalOnProperty通过配置文件中的属性值来判定注入是否注入某个Bean或者配置类,matchIfMissing属性为true时,配置文件中缺少对应的value或name的对应的属性值,也会注入成功. @conditionalOnProperty的name和value属性是互斥的,不能同时出现测试代码如下://controller@RestControllerpublic class TestController { @Autowired Sen.原创 2022-03-23 22:02:05 · 763 阅读 · 0 评论 -
Spring-创建完bean之后自动回调里面的方法
目录 1.实现SmartInitializingSingleton接口,具体原因解释如下:2.实现ApplicationListener接口:基于监听器解决问题,具体原因解释如下:在公司统一配置中心客户端的程序代码中,遇到了这么一个问题:将所写的客户端程序打成jar后放到客户端里面,创建完Bean之后需要自动回调里面的方法来完成检测服务端是否重新发布配置的一个长轮询基于这个问题,给出两个解决方案:: 1.实现SmartInitializingSingleton接口,具体原因解释如下...原创 2022-03-23 16:11:20 · 906 阅读 · 0 评论