spring
文章平均质量分 51
欧阳惜竹
此生无悔
展开
-
Spring 工具类-AntPathMatcher
文章目录源码使用匹配例子源码AntPathMatcher是org.springframework.util工具包下的方法。/*** A convenient, alternative constructor to use with a custom path separator. * @param pathSeparator the path separator to use, must not be {@code null}. * @since 4.1 */public AntPathMa原创 2021-01-08 16:55:21 · 457 阅读 · 0 评论 -
(二十六)Spring容器创建
文章目录结论先行1、prepareRefresh()2、obtainFreshBeanFactory()3、prepareBeanFactory(beanFactory)4、postProcessBeanFactory(beanFactory)4.1、以上是BeanFactory的创建及预准备工作5、invokeBeanFactoryPostProcessors(beanFactory)6、registerBeanPostProcessors(beanFactory)7、initMessageSource(原创 2020-08-08 21:52:11 · 128 阅读 · 0 评论 -
(二十五)扩展原理-ApplicationListener、@EventListener、SmartInitializingSingleton
文章目录结论先行ApplicationListener子类配置类启动类结果结果说明ApplicationListener类定义ApplicationEvent的其他内置事件自定义事件启动类结果结果说明原理结论先行ApplicationListener:监听容器中发布的事件。事件驱动模型开发; publicinterfaceApplicationListener<EextendsApplicationEvent> 监听ApplicationEvent及其下面的子事件; 步骤: 1原创 2020-08-08 09:07:56 · 326 阅读 · 0 评论 -
(二十四)扩展原理-BeanDefinitionRegistryPostProcessor
文章目录结论先行BeanDefinitionRegistryPostProcessor子类配置类启动类结果结果说明原理断点位置结论先行 BeanDefinitionRegistryPostProcessor extends BeanFactoryPostProcessor postProcessBeanDefinitionRegistry(); 在所有bean定义信息将要被加载,bean实例还未创建的; 优先于BeanFactoryPostProcessor执行; 利原创 2020-08-08 00:06:35 · 166 阅读 · 0 评论 -
(二十三)扩展原理-BeanFactoryPostProcessor
文章目录结论先行BeanFactoryPostProcessor子类配置类启动类工具类结果结果解析BeanFactoryPostProcessor类的postProcessBeanFactory方法定义结论先行 扩展原理: BeanPostProcessor:bean后置处理器,bean创建对象初始化前后进行拦截工作的 1、BeanFactoryPostProcessor:beanFactory的后置处理器; 在BeanFactory标准初始化之后调用,来定制和修改BeanFact原创 2020-08-07 23:14:55 · 208 阅读 · 0 评论 -
(二十二)AOP-声明式事务@Transactional
文章目录结论先行bean定义配置类启动类结果Service结果@TransactionalService运行结果结论先行 声明式事务: 环境搭建: 1、导入相关依赖 数据源、数据库驱动、Spring-jdbc模块 2、配置数据源、JdbcTemplate(Spring提供的简化数据库操作的工具)操作数据 3、给方法上标注 @Transactional 表示当前方法是一个事务方法; 4、 @EnableTransactionManagement 开启基于注解的事务管理功原创 2020-08-07 00:16:25 · 406 阅读 · 0 评论 -
(二十一)AOP-测试-原理
文章目录结论先行bean定义切面类配置类启动类结果结论先行AOP:【动态代理】指在程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式;1、导入aop模块;Spring AOP:(spring-aspects)2、定义一个业务逻辑类(MathCalculator);在业务逻辑运行的时候将日志进行打印(方法之前、方法运行结束、方法出现异常,xxx)3、定义一个日志切面类(LogAspects):切面类里面的方法需要动态感知MathCalculator.div运行到哪里然后执行;通原创 2020-08-06 18:16:40 · 409 阅读 · 0 评论 -
Spring官方文档下载地址
之前在国内资源网站遇见很多spring Framework Reference Documentation开发手册下载的,居然都要资源点之类的,而且几乎都是英语(截止到2016/06/15,较新版本都没有中文版),简直丧心病狂,手册本来就是官网免费下载的。宝宝很委屈,但是宝宝不说 :于是在这里贴出官网下载地址:Spring Framework Reference Documentation手册下载地址。pdf手册比如(4.3.1)这个:http://docs.spring.io/spring/doc原创 2020-08-06 17:11:08 · 986 阅读 · 3 评论 -
(二十)自动装配-@Profile
文章目录结论先行Profile:切换环境pom依赖配置文件配置类启动类结果配置类结果结果分析配置类更改虚拟机参数运行结果结果说明启动类结果原理IOC有参构造器标注在配置类上配置类启动类结果结果解析配置类启动类结果结果解析结论先行Profile: Spring为我们提供的可以根据当前环境,动态的激活和切换一系列组件的功能;比如在不同的环境使用不同的数据源@Profile:指定组件在哪个环境的情况下才能被注册到容器中,不指定,任何环境下都能注册这个组件1)、加了环境标识的bean,只有这个环境被激原创 2020-08-06 17:04:33 · 201 阅读 · 0 评论 -
(十九)自动装配-Aware接口注入Spring底层组件
文章目录结论先行接口定义解释接口及其子类bean定义配置类启动类结果结果说明原理结论先行1。自定义组件如果想要使用Spring容器底层的一些组件(ApplicationContext,BeanFactory,xxx);只需要自定义组件实现xxxAware,并实现相应的方法,在创建对象的时候,Spring会调用接口规定的方法注入相关组件;2.Spring通过使用xxxAwareProcessor处理实现xxxAware接口想要使用相应的底层组件的bean注入。比如ApplicationContextAw原创 2020-08-06 16:15:53 · 215 阅读 · 0 评论 -
(十八)自动装配-@Autowired-构造器,参数,方法,属性
文章目录结论先行@Autowired定义bean定义配置类启动类结果bean定义结果结果分析bean定义结果结果说明bean定义结果结果说明bean定义结果结果说明bean定义结果结果说明结论先行1.默认加在ioc容器中的组件,容器启动会调用无参构造器创建对象,再进行初始化赋值等操作,如果只有有参构造器,Spring会调用有参构造器,有参构造器的参数会自动注入2.@Autowired注解可以标注在构造器,参数,方法,属性上;都是自动从容器中获取参数组件的值1)、[标注在方法位置]:@Bean或者方法原创 2020-08-06 15:09:16 · 7554 阅读 · 0 评论 -
(十七)自动装配-@Resource@Inject
文章目录结论先行@Resourcebean定义配置类启动类结果结果说明@Injectbean定义结果结果结论先行1)、 Spring还支持使用@Resource(JSR250)和@Inject(JSR330)[java规范的注解]@Resource:可以和@Autowired一样实现自动装配功能;默认是按照组件名称进行装配的;没有能支持@Primary功能,没有支持@Autowired(reqiured=false);@Inject:需要导入javax.inject的包,和Autowired的原创 2020-08-05 22:55:46 · 178 阅读 · 0 评论 -
(十六)自动装配-@Autowired@Qualifier@Primary
文章目录结论先行@Autowired基础类定义配置类启动类结果结果分析问题@Qualifier实验一bean定义配置类启动类结果结果说明实验二bean定义配置类启动类结果结果说明实验三bean定义结果结果说明实验四bean定义配置类结果结果实验五bean定义结果结果说明@Primary实验一bean定义配置类结果结果说明实验二bean定义结果结果说明结论先行1)、默认优先按照类型去容器中找对应的组件:类似于applicationContext.getBean(BookDao.class);找到就赋值2原创 2020-08-05 22:34:36 · 332 阅读 · 0 评论 -
(十五)属性赋值-@Value和@PropertyScource
文章目录结论先行XML配置导入配置文件bean定义配置类启动类结果结果说明配置文件bean定义配置类结果结果说明@PropertyScource结论先行@Value可以给类属性赋值(包括实际值Spel即#{},和${}从配置文件取值)@PropertyScource加载配置文件XML配置导入配置文件<context:property-placeholder location="classpath:person.properties"/>bean定义package com.ouya原创 2020-08-05 10:45:42 · 479 阅读 · 0 评论 -
(十四)生命周期-总结
PostConstructPreDestroy:在容器销毁bean之前通知我们进行清理工作 bean的生命周期: bean创建---初始化----销毁的过程 容器管理bean的生命周期; 我们可以自定义初始化和销毁方法;容器在bean进行到当前生命周期的时候来调用我们自定义的初始化和销毁方法 构造(对象创建) 单实例:在容器启动的时候创建对象 多实例:在每次获取的时候创建对象\ BeanPostProcessor.p.原创 2020-08-04 23:15:14 · 146 阅读 · 0 评论 -
(十三)生命周期-BeanPostProcessor后置处理器
文章目录结论先行BeanPostProcessor实现类定义配置类启动类结果结论先行通过实现BeanPostProcessor接口,并实现postProcessBeforeInitialization和postProcessAfterInitialization方法,可以自定义bean初始化前后的逻辑BeanPostProcessor实现类定义package com.ouyangxizhu.bean;import org.springframework.beans.BeansException;原创 2020-08-04 22:47:15 · 287 阅读 · 0 评论 -
(十二)生命周期-@PostConstruct和@PreDestroy
文章目录结论先行bean定义配置类启动类结果结论先行@PostConstruct:在bean创建完成并且属性赋值完成;来执行初始化方法@PreDestroy:在容器销毁bean之前通知我们进行清理工作bean定义package com.ouyangxizhu.bean;import org.springframework.stereotype.Component;import javax.annotation.PostConstruct;import javax.annotation.P原创 2020-08-04 22:35:18 · 186 阅读 · 0 评论 -
(十一)生命周期-InitializingBean和DisposableBean
文章目录结论先行bean定义配置类启动类结果结论先行bean实现InitializingBean和DisposableBean接口,并实现相应的方法,可以定义初始化和销毁方法bean定义package com.ouyangxizhu.bean;import org.springframework.beans.factory.DisposableBean;import org.springframework.beans.factory.InitializingBean;import org.s原创 2020-08-04 22:23:29 · 125 阅读 · 0 评论 -
(十)生命周期-初始化和销毁方法
文章目录结论先行实验一bean定义配置类启动类结果结果说明实验二配置类结果结果说明实验三配置类启动类结果结果说明实验四配置类启动类结果结果说明实验五配置类启动类结果结果说明结论先行 bean的生命周期: bean创建---初始化----销毁的过程 容器管理bean的生命周期; 我们可以自定义初始化和销毁方法;容器在bean进行到当前生命周期的时候来调用我们自定义的初始化和销毁方法 构造(对象创建) 单实例:在容器启动的时候创建对象原创 2020-08-04 22:09:21 · 664 阅读 · 0 评论 -
(九)Spring组件注册总结
* 给容器中注册组件; * 1)、包扫描+组件标注注解(@Controller/@Service/@Repository/@Component)[自己写的类] * 2)、@Bean[导入的第三方包里面的组件] * 3)、@Import[快速给容器中导入一个组件] * 1)、@Import(要导入到容器中的组件);容器中就会自动注册这个组件,id默认是全类名 * 2)、ImportSelector:返回需要导入的组件的全类名数组; * 3)、ImportBeanDefinitionRegistr.原创 2020-08-04 11:01:44 · 95 阅读 · 0 评论 -
(八)Spring组件注册-FactoryBean
文章目录结论先行FactoryBean子类配置类工具类启动类结果结论先行先定义一个工厂bean(实现FactoryBean接口及其相关方法),并注册到配置类中,即可自定义注册组件从容器中直接根据name获取工厂bean返回的是其getObject()方法返回的类型,要想获取工厂bean本身需要在名字前加&FactoryBean子类package com.ouyangxizhu.factorybean;import com.ouyangxizhu.bean.Color;import o原创 2020-08-04 10:59:13 · 184 阅读 · 0 评论 -
(七)Spring组件注册-@ImportBeanDefinitionRegistrar
文章目录结论先行@importImportBeanDefinitionRegistrarImportBeanDefinitionRegistrar子类配置类启动类结果结论先行ImportBeanDefinitionRegistrar是一个接口,其有一个registerBeanDefinitions方法,可以手工注入类@import/* * Copyright 2002-2016 the original author or authors. * * Licensed under the Apa原创 2020-08-04 10:35:24 · 134 阅读 · 0 评论 -
(六)Spring组件注册-@ImportSelector
文章目录结论先行@importImportSelector组件ImportSelector子类编写配置类启动类结果ImportSelector子类中入参AnnotationMetadataImportSelector子类编写结果DEBUG结果结论ImportSelector子类返回null,会报NPE配置类结论结论先行ImportSelector是一个接口,其有一个selectImports方法,返回要导入组件的全类名数组@import/* * Copyright 2002-2016 the or原创 2020-08-04 10:11:25 · 235 阅读 · 0 评论 -
(五)Spring组件注册-@Import
文章目录结论先行组件配置类工具类启动类结果结论结论先行@Import(要导入到容器中的组件);容器中就会自动注册这个组件,id默认是全类名组件package com.ouyangxizhu.bean;public class Color {}配置类package com.ouyangxizhu.config;import com.ouyangxizhu.bean.Color;import org.springframework.context.annotation.Configu原创 2020-08-04 09:31:44 · 141 阅读 · 0 评论 -
(四)Spring组件注册-@Conditional
文章目录意义定义信息Condition类定义信息Condition子类编写配置类启动类运行结果@Condition在配置类上意义按照一定的条件进行判断,满足条件给容器中注册bean定义信息/* * Copyright 2002-2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file e原创 2020-08-03 22:35:10 · 118 阅读 · 0 评论 -
(三)Spring组件注册-@Scope和@Lazy
文章目录xml配置scope说明首先看一下没有指定属性时配置类启动类结果结果说明@Scope配置类启动类结果结果说明类创建时机单实例配置类单实例启动类单实例结果单实例结果说明多实例配置类多实例启动类结果为空注释多实例bean配置类启动类结果结果说明@Lazy实验1配置类启动类结果结果说明实验2配置类不变启动类结果结果说明问题如果多实例bean被@Lazy注解标注会怎么样多实例bean获取的时候怎么创建的?(看一下源码)xml配置scope<bean id="person" class="com.a原创 2020-08-03 10:14:07 · 129 阅读 · 0 评论 -
(二)Spring组件注册-@ComponentScan和@ComponentScans
文章目录链接视频github老的方式注解@ComponentScan测试用例配置类启动类结果结果解析ComponentScan注解ComponentScan的excludeFilters配置类启动类结果结果解析ComponentScan的includeFilters配置类结果结果解析真正的配置正常xml配置配置类配置结果ComponentScans配置类运行结果链接视频https://www.bilibili.com/medialist/play/ml1022680573/p3githubhttp原创 2020-08-02 21:38:29 · 731 阅读 · 0 评论 -
(一)Spring组件注册-@Configuration和@Bean
文章目录链接视频github@Configuration和@Bean老的使用方式编写Person类classpath下新建beans.xml文件,并添加Person类配置编写测试类打印结果新的方式(注解)编写配置类编写测试类打印结果通过注解改名字改配置类如下怎么改类在IOC容器中的名字呢1.改配置类中的方法名(就是IOC中的类名)2.在注解上做文章链接视频https://www.bilibili.com/medialist/play/ml1022680573/p2githubhttps://git原创 2020-08-02 18:56:27 · 307 阅读 · 0 评论 -
学习spring源码感想
没事方法不要写那么长读起来很麻烦,将大的函数按照功能分成多个函数或者多个调用,这样维护和读起来很顺,还能显示水平,也能利于思路的整理很长的函数:org.springframework.beans.factory.support.ConstructorResolver#autowireConstructor多个函数调用:org.springframework.beans.factory.s...原创 2019-10-08 16:41:41 · 454 阅读 · 0 评论 -
spring解决循环依赖
文章目录循环依赖的两种方式构造器循环依赖(无法解决)setter循环依赖(能解决)循环依赖的两种方式构造器循环依赖(无法解决)抛出BeanCurrentlyInCreationExceptionsetter循环依赖(能解决)...原创 2019-10-08 15:18:34 · 175 阅读 · 0 评论 -
spring中的缓存:DefaultSingletonBeanRegistry中存储bean的不同map/set
文章目录1. singletonObjects2. singletonFactories3. earlySingletonObjects4. registeredSingletons1. singletonObjects保存BeanName和创建的bean实例之间的关系,bean name->bean instance。2. singletonFactories保存BeanName和...原创 2019-10-06 10:52:45 · 453 阅读 · 0 评论 -
扩展spring自定义标签配置步骤
创建一个需要扩展的组件定义一个XSD文件描述组件内容创建一个文件,实现BeanDefinitionParser接口,用来解析XSD文件中的定义和组件定义创建一个Handler,扩展自NamespaceHandlerSupport,目的是将组件注册到spring容器编写Spring.handlers和Spring.schemas文件。...原创 2019-10-05 14:58:08 · 119 阅读 · 0 评论 -
注解
文章目录1. 定义2. JDK中常见的注解2.1 @Override2.2 @Deprecated2.3 @SuppressWarnings()3. 注解的分类3.1 按照运行机制分3.1.1 源码注解3.1.2 编译时注解3.1.3 运行时注解4. 自定义注解语法5. 解析注解1. 定义java提供了一种原程序中的元素关联任何信息和任何元数据的途径和方法。(java1.5之后有的)2. J...原创 2019-09-14 21:22:48 · 120 阅读 · 0 评论 -
spring源码导入流程
文章目录一、简介二、下载Spring源码2.1 方法一2.2 方法二三、下载Gradle四、配置环境变量:五、使用:gradle -version 查看gradle的安装六、构建七、构建失败八、解决办法8.1 修改maven 仓库和classpath8.2 将 org.jetbrains.dokka 版本从0.9.17改为0.9.15九、构建成功十、导入到IDEA一、简介导入Spring 5....原创 2019-08-28 21:42:12 · 508 阅读 · 1 评论 -
spring ioc解决循环依赖
文章目录一、简介1.1 多级缓存一级缓存 singletonObjects(单例缓存池)二级缓存 earlySingletonObjects三级缓存 singletonFactories创建bean二、初始化流程1. AbstractApplicationContext#getBean2. AbstractBeanFactory#doGetBean2.1 解析别名transformedBeanNa...原创 2019-08-27 20:22:55 · 380 阅读 · 0 评论