
Spring
文章平均质量分 85
Spring相关知识的记录。
Evan Wang
终身学习者,优快云博客专家,系统架构师,AWS、阿里云认证云架构师,精通云原生、Spring生态、微服务、分布式体系等相关技术,擅长解决高并发场景下,各种技术问题。
展开
-
Spring的编程式事务TransactionTemplate
本文介绍了Spring框架中TransactionTemplate的用法。TransactionTemplate提供了一种在代码中进行编程式事务管理的方式,使开发人员能够在方法级别定义事务的开始和结束点。通过配置事务管理器并使用TransactionTemplate,我们可以方便地执行事务操作,并根据需要设置传播行为和隔离级别。希望本文能够帮助你更好地理解和应用Spring的事务管理功能。原创 2023-07-18 22:45:24 · 9106 阅读 · 3 评论 -
@AliasFor的使用方法
注意,我们需要在MyCombinedAnnotation中加上@MyAnnotation1、@MyAnnotation2、@MyAnnotation3三个注解,表示这个新注解中包含了这三个注解的所有属性,可以通过@MyCombinedAnnotation来代替这三个注解的使用。当然,你也可以理解为将一个注解上的属性值传递给另一个注解,我个人更习惯采用这种理解,因为后续可以通过一个注解组合多个注解进行使用,通过一个注解将值传递给多个注解,而这与java的继承的概念并不相同。原创 2023-03-07 12:48:13 · 3174 阅读 · 2 评论 -
BeanFactory和FactoryBean区别
一、BeanFactory1、简单介绍这个其实是所有Spring Bean的容器根接口,给Spring 的容器定义一套规范,给IOC容器提供了一套完整的规范,比如我们常用到的getBean方法等。进入到这个类,我们可以看到如下注释,意思是:访问Spring bean容器的根接口。2、定义方法getBean(String name): Spring容器中获取对应Bean对象的方法,如存在,则返回该对象。 containsBean(String name):Spring容器中是否存在该原创 2022-02-07 17:41:43 · 3593 阅读 · 1 评论 -
@TransactionalEventListener的使用和实现原理
一、问题描述平时我们在完成某些数据的入库后,发布了一个事件,此时使用的是@EventListener,然后在这个事件中,又去对刚才入库的数据进行查询,从而完成后续的操作。例如(数据入库=>对入库数据进行查询审核),这时候会发现,查询不到刚才入库的数据,这是因为事务还没提交完成,在同一个事务当中,查询不到才存入的数据,那么就引出了下面的解决方式。为了解决上述问题,Spring为我们提供了两...原创 2020-04-25 14:40:05 · 27393 阅读 · 14 评论 -
SpringMVC零xml配置原理
前言:在我们使用springmvc时,每次都要去配置web.xml,spring-mvc.xml,甚至和spring整合时候,还要配置spring.xml。用起来比较麻烦,用过springboot的朋友应该知道,springboot中使用springmvc时候就不会去指定xml。那这样的操作是怎么实现的呢,下面我们就来探究下springmvc零配置xml原理。一、搭建测试项目由于代...原创 2019-11-20 23:44:43 · 872 阅读 · 0 评论 -
手写模拟SpringMVC
前言:springmvc想必大家都有用过,但是你有去真正的了解过springmvc究竟是怎么进行工作的吗?为什么加上@controller @RequestMapping等注解,就会映射到指定类的方法上呢?下面我们就来探究一下,手写模仿一个springmvc。注:代码演示主要侧重原理的模拟,有很多细节存在不足,请勿较真。 如果有什么改进意见,欢迎大家提出...原创 2019-11-15 17:59:02 · 406 阅读 · 0 评论 -
Spring之@DependsOn的实现原理
为什么要控制Bean的加载顺序?首先spring容器对一般的bean的初始化顺序是不确定的**(个别Spring自身初始化用的bean和配置类的bean会优先初始化)。**,但是我们在某些场景下(具体场景如下面举例),我们又需要控制顺序。这时候,就用到了@DenpendsOn。一、@DependsOn的使用使用场景:1、beanA 间接依赖 beanB并不是直接通过 构造方法或@Aut...原创 2019-12-24 21:35:49 · 1888 阅读 · 0 评论 -
Spring事件发布与监听
最近算是把spring整体的又过了一遍,发现很多东西虽然用的多,但是有些思想理解的不够透彻,在此记录下,顺便感叹下,spring源码看了大部分,这才没过多久又忘了 TnT 。一、事件监听相关概念介绍1、流程分析事件:做了什么事。例如,我在写博客,写博客就是一个事件。监听器:监听发生事件的组件。例如,我们日常生活中的火灾报警器,监听有没有发生火灾事件。在一个完整的事件体...原创 2019-12-10 16:40:49 · 1586 阅读 · 1 评论 -
Spring应用之AOP的使用和总结
前面一篇文章分析了Spring AOP的原理,下面这篇文章对Spring AOP做一个简单的介绍和总结。一、Spring AOP的常见面试题目1.AOP是什么与OOP对比,面向切面,传统的OOP开发中的代码逻辑是自上而下的,而这些过程会产生一些横切性问题,这些横切性的问题和我们的主业务逻辑关系不大,这些横切性问题不会影响到主逻辑实现的,但是会散落到代码的各个部分,难以维护。AOP...原创 2019-11-04 00:22:36 · 410 阅读 · 0 评论 -
spring源码分析之Aop
今天读spring源码,读到aop相关内容,在此记录一下,以便以后复习和查阅。一、spring如何实现Aop这里简单的说下原理,spring实例化bean要经历一套完整的生命周期,在这个过程中会对要实例化的bean进行各种各样的处理,例如先new对象、进行属性注入、处理循环依赖、处理生命周期回调、实现Aop等等。这些操作实际都是通过spring的后置处理器,也就是通过BeanPostP...原创 2019-11-01 17:51:58 · 2228 阅读 · 0 评论 -
使用CGLIB enhancer实现类的增强
今天在读spring源码的时候,比较深入如的研究了一下@Configuration注解。发现@Configurtion注解的类,实际实现了CGLIB动态代理,这个后续会写一篇博客专门说明。这里简单的记录下CGLIB动态代理的使用。一、使用CGLIB代理需要注意的问题如果类是抽象类,只能调用已实现方法方法,如果调用抽象方法的时候会报java.lang.AbstractMethodErr...原创 2019-10-31 16:31:56 · 1463 阅读 · 0 评论 -
Spring注解之@Import用法
最近在看spring5.1以及mybatis-spring源码的时候,发现@MapperScan以及很多springboot的@EnableXXX注解,都用到了这个@Import注解。所以打算仔细研究下该注解的作用。顺便把类似的@ImportRescource也在这里总结一下。一、@Import简介简介:在Spring3.0之前,我们的bean可以通过xml配置文件和扫描特定包下...原创 2019-10-29 19:52:46 · 1675 阅读 · 0 评论 -
Spring源码分析之扩展点BeanDefinitionRegistryPostProcessor
一、BeanDefinitionRegistryPostProcessor接口简介:该接口继承了BeanFactoryPostProcessor接口,且新增postProcessBeanDefinitionRegistry方法。方法参数是BeanDefinitionRegistry对象,BeanDefinitionRegistry对象是bean定义的保存中心(实际底层就是BeanDefini...原创 2019-10-24 03:18:05 · 923 阅读 · 0 评论 -
使用@ComponentScan注解自定义扫描规则
一、注解使用1.作用@ComponentScan:会自动扫描包路径下面的所有标注有@Controller、@Service、@Repository、@Component 的类。可配置自定义扫描规则。2.可配置属性:value指定扫描的包。 includeFilters 哪些类需要过滤。 excludeFilters 哪些类不用过滤。 useDefaultFilters 默...原创 2019-10-22 00:52:38 · 1716 阅读 · 0 评论 -
用IDEA编译spring5的源码
由于spring5是使用gradle进行编译,有些地方可能我们不够熟悉,下面介绍下用IDEA编译spring5源码。如果有哪些问题欢迎给我留言,我看到的话会及时帮你解决。这里附上我编译好的代码下载链接:=>下载链接提取码:leur一、 环境及准备工作:1.环境:spring源码5.1 JDK_1.8.0_221 gradle-5.6.1-all IDEA...原创 2019-10-17 23:19:40 · 764 阅读 · 0 评论 -
详解Spring中getBean()方法
我们日常会经常使用getBean()方法从spring容器中获取我们需要的bean。那么,getBean()方法是怎么一步步完成从spring容器中获取bean的呢?下面我们就通过源码分析一下。一、主要代码分析 基于:spring5.1入口:AbstractBeanFactory类的doGetBean(): public Object getBean(String n...原创 2019-10-17 13:40:26 · 10274 阅读 · 0 评论 -
详解Spring中bean生命周期回调方法
对于spring的bean来讲,我们默认可以指定两个生命周期回调方法。一个是在ApplicationContext将bean初始化完全完成后,包括注入对应的依赖(例如属性注入)后的回调方法;另一个是在ApplicationContext准备销毁之前的回调方法。要实现这种回调主要有三种方式:实现特定的接口。 在XML配置文件中指定回调方法。 使用JSR-250标准的注解。关于生命周期...原创 2019-10-13 13:47:05 · 1486 阅读 · 0 评论 -
关于registerSingleton()方法的缺点
之前在《如何把对象放入spring容器》这篇文章中,提到了registerSingleton()方法。说这个方法有些鸡肋。利用这篇文章解释一下为什么说这个方法它比较鸡肋呢。注:读这篇文章前需要你对spring的依赖关系有一定的了解,否则可能看起来吃力一些。如果实在看不懂,就记住用法就行了,不用纠结。一、关于存在的问题/** * 按照这种写法的话, * 因为当前要托管...原创 2019-10-11 20:39:44 · 6222 阅读 · 8 评论 -
如何把对象放入spring容器
在我们开发中,很常见的会遇见我们自己的对象依赖于Spring容器中的对象,此时需要将我们的对象托管给Spring容器,否则我们将无法使用依赖的对象。下面介绍一下将我们的对象托管给Spring容器的三种方式。一、 使用@Bean注解第一种大家都比较熟悉的方式,采用@Bean注解。这里我们只介绍方式,@Bean注解的用法不做赘述。public class Cat {}@C...原创 2019-10-11 19:15:39 · 4892 阅读 · 0 评论 -
bean注入失败原因总结:NoSuchBeanDefinitionException: No qualifying bean of type
问题描述:Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.test.service.PersonService' available.bean注入失败,可以分为两种情况:第一种,即要注...原创 2019-10-09 21:32:47 · 46943 阅读 · 1 评论 -
SSM框架下实现form表单提交的方式
实现form表单的提交有多种方式,这里我们主要讲两种常用的。注:此Demo是在SSM框架下完成的,数据库采用MySQL,关于ssm整合的相关知识,这里不做过多赘述。主要展示表单提交方式,暂不考虑代码健壮性。一、常见的form表单提交方式 分析:常见的表单提交方式,在表单中添加一个submit按钮,当点击按钮后,通过请求表单的action中的url,跳转到表现层从而完成对...原创 2018-12-22 19:48:00 · 13100 阅读 · 5 评论 -
@ResponseBody注解的作用
1、 @ResponseBody注解的作用是将controller的方法返回的对象 通过适当的转换器 转换为指定的格式之后,写入到response对象的body区(响应体中),通常用来返回JSON数据或者是XML。 数据,需要注意的呢,在使用此注解之后不会再走视图处理器,而是直接将数据写入到输入流中,它的效果等同于通过response对象输出指定格式的数据。 这里...原创 2018-11-20 12:50:24 · 47932 阅读 · 4 评论