Spring
文章平均质量分 85
程序猿洞晓
不忘初心,方得始终。
展开
-
spring事务失效的这10种坑,看看你踩中没!!!
对于从事java开发工作的同学来说,spring的事务肯定再熟悉不过了。在某些业务场景下,如果同时有多张表的写入操作,为了保证操作的原子性(要么同时成功,要么同时失败)避免数据不一致的情况,我们一般都会使用spring事务。没错,spring事务大多数情况下,可以满足我们的业务需求。但是今天我要告诉大家的是,它有很多坑,稍不注意事务就会失效。转载 2022-10-10 16:33:41 · 379 阅读 · 0 评论 -
Spring注解@Async和@Transactional失效问题究竟是什么原因,强势解释一波
提前说说项目中涉及到的代码我都会上传到码云(gitee)或者github上,提供给大家下载参考,文中就以最简单的方式说明执行过程。源码的地址在文末哦!问题场景重现场景一:Spring的异步执行注解@Async,在调用这个方法的时候发现,不对劲,耗时的逻辑我已经加入到异步取做了,怎么接口请求的响应这么慢,赶紧看日志,懵X,加了异步注解,却没有异步执行。场景二:在项目中用到@Transactional注解实现事务是必须滴,如果你还在用xml配置,那我只能说……。但是有时候我们会发现在方法上加了@T原创 2022-03-21 08:58:05 · 2288 阅读 · 0 评论 -
面向切面思想实现项目全局异常处理(简单切面+Spring提供的封装)
以前写项目的时候所谓,异常直接在各个层里面捕捉处理后向外返回错误信息,但是实际上有些运行时异常很容易被忽略,这样就会导致这些异常出现后会直接返回给调用方。当时的解决方案就是在Controller层的每个方法加try-catch块,捕捉所有的异常并处理后返回给调用方,但是这样处理起来比较麻烦,因为每个方法上都要加try-catch,显得代码很不优雅。后来随着项目接触的多,有使用拦截器或者过滤器的,当然现在使用最多的还是切面,并且在Spring boot中还提供了封装好的切面,实现即可。使用切面思想统一处理原创 2022-03-16 08:46:45 · 2111 阅读 · 0 评论 -
Spring注解式注入依赖bean优先级
使用注解的方式注入bean实例,在两年前的开发中,还经常看到@Resource注解,这个注解是基于JSR250标准的,现在基本很少看到使用了,取而代之的是@Autowired注解,也是官方推荐的。随着spring boot的出现,很多开发小伙伴喜欢通过config配置类加载一些bean,在加载这些bean会依赖到其他的一些bean实例,这个时候又慢慢的开始有比较多的使用@Qualifier注解和@Autowired配合使用,但是从版本来看@Qualifier注解早在spring2.5版本就已经存在了。当然注原创 2022-03-16 08:46:01 · 3887 阅读 · 1 评论 -
从源码的角度分析@Lazy和@Scope对IOC容器初始化影响以及IOC的总结
在之前的文章中说过lazy、scope对spring ioc容器的初始化影响(Spring中Lazy、Scope注解对IOC容器Bean初始化的影响分析),但是没有具体深入的说,而是通过表面数据判断。另外就是之前也写过spring ioc容器初始化的源码分析(Spring IOC容器初始化基础过程源码了解),这里算是前两篇文章的续集,也是对其补充和做一个总结性的结论。情景简介这里就直接进入主题,分别使用@Lazy和@Scope("prototype")来修饰两个bean,不会再去做其他的解释,如果这些有原创 2022-03-16 08:45:47 · 218 阅读 · 0 评论 -
Spring AOP之aspectj切面增强过程理解
aspectj下主要有@Before、@After、@AfterReturning、@AfterThrowing、@Around几个通知的方式。在实际的开发过程中也是经常要用到的,之前只能停留在会用的层面上,为了更深入的了解这些方法执行的时机和原理,只能学习源码,这里分享出来,希望和大家共同学习进步。下面直接上代码:需要实现的功能调用AspectCenter类中的doit()方法,切面需要切到这个方法并按照切面规则执行增强方法和业务逻辑方法。引入依赖<dependency>原创 2022-03-15 10:10:26 · 1572 阅读 · 2 评论 -
Spring IOC容器初始化基础过程源码了解
Spring IOC初始化有很多种方式,如xml方式、注解方式(也分很多不同的方式)、FactoryBean方式等等,这个在之前的博客中有写过(Spring IOC初始化bean对象创建的N种实现方式理解)。这里就其中的一种方式来理解一下整个创建bean的基本过程。前提说明在写之前,先说明一下场景。这里是从AnnotationConfigApplicationContext的构造方法进入。当然进入的还有很多其他方式,如ClassPathXmlApplicationContext等。他们的共同点都是继原创 2022-03-15 10:07:57 · 246 阅读 · 0 评论 -
Spring IOC初始化bean对象创建的N种实现方式理解
Spring IOC基础此部分内容是借鉴于凯涛的博客:IoC 之 2.1 IoC基础 ——跟我学Spring3IoC是什么Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。如何理解好Ioc呢?理解好Ioc的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”,那我们来深入分析一下:谁控制谁,控制什么:传统Java SE程序原创 2022-03-15 10:05:12 · 559 阅读 · 0 评论 -
Spring中Lazy、Scope注解对IOC容器Bean初始化的影响分析
面试的时候总是会遇到各种Spring主要功能点的问题,因为Spring对于java来说太重要。如Spring的IOC容器、动态代理、事务、切面编程等等。后期再更新文章的时候我们会慢慢讨论这些东西,这里现在我们先看其中一个功能点IOC容器,其实也不算是说IOC容器,主要的重点是放在Spring注解对IOC容器初始化的影响。也是在面试中最常说漏的。面试模拟面试官:小明,看你的简历中说对Spring有熟练的理解,那问你一个关于Spring IOC容器的问题。小明:嗯!面试官:我们在Spring中都会使用到原创 2022-03-15 10:02:28 · 538 阅读 · 0 评论 -
Spring AOP动态代理CGLIB、JDK的基本原理
AOP是什么?AOP(Aspect Orient Programming),我们一般称为面向方面(切面)编程,作为面向对象的一种补充,用于处理系统中分布于各个模块的横切关注点,比如事务管理、日志、缓存等等。AOP实现的关键在于AOP框架自动创建的AOP代理,AOP代理主要分为静态代理和动态代理,静态代理的代表为AspectJ;而动态代理则以Spring AOP为代表。本文会分别对AspectJ和Spring AOP的实现进行分析和介绍。Spring AOP如何实现的?Spring AOP中的动态代理主原创 2022-03-15 10:00:57 · 198 阅读 · 0 评论 -
Spring注解@Async和@Transactional失效问题究竟是什么原因,强势解释一波
原文作者:弥诺R 原文地址:http://www.minuor.com/1524750647/article 转载声明:转载请注明原文地址,注意版权维护,谢谢!提前说说项目中涉及到的代码我都会上传到码云(gitee)或者github上,提供给大家下载参考,文中就以最简单的方式说明执行过程。源码的地址在文末哦!问题场景重现场景一:Spring的异...原创 2018-04-27 21:52:38 · 9709 阅读 · 3 评论 -
Spring AOP+反射实现自定义动态配置校验规则,让校验规则飞起来
原文作者:弥诺R 原文地址:http://www.minuor.com/1524369999/article 转载声明:转载请注明原文地址,注意版权维护,谢谢!场景小计之前项目都是使用hibernate-validator来校验参数,但是实际上会出现一些小问题,就是校验规则都是通过注解的方式来完成,这样如果项目上线了,这个参数校验规则就没办法修改,如果出现校验规则...原创 2018-04-22 12:11:48 · 3811 阅读 · 4 评论 -
Java项目启动成功、失败信息实时反馈提醒(邮件或者短信)
在开发的流程中必须涉及的项目的部署发布,这个过程也肯定会有成功失败,在不同的公司里采用的提醒方式不同。在说明下面的方案前,需要首先说明一下基本应用的场景。原创 2018-03-20 17:10:27 · 3209 阅读 · 0 评论 -
spring自带的定时器@Scheduled
多谢好友分享:spring自带的定时器@Scheduled转载 2016-04-10 15:35:59 · 469 阅读 · 0 评论 -
单个工程中Spring+Mybatis连接多个数据库的配置(个人研究版本)
之前在解决一个项目连接数据库问题的时候在网上苦寻答案无果,于是显示自己研究,终于黄天不负有心,接先来我将分享一下配置的具体过程。此种配置并非是数据库的读写分离,而是连接两个库。情景:现在单个工程中需要连接两个库,这两个库在同一个mysql中,两个库都需要进行读写。解决:第一步:将spring和mybatis整合,这个过程就不具体演示了,在这个过程中创建了直接使用的五个配置文件。原创 2015-10-27 09:44:48 · 14366 阅读 · 1 评论 -
单个工程中Spring+Mybatis连接多个数据库的配置(个人分享版本)
上一篇博客说到同一个问题,经过和朋友的研究已经参考网上的资料,现在给出一份更简洁的配置。情景:现在单个工程中需要连接两个库,这两个库在同一个mysql中,两个库都需要进行读写。解决:第一步:将spring和mybatis整合,这个过程就不具体演示了,在这个过程中创建了直接使用的五个配置文件、两个类、一个标识。五个配置文件:jdbc.propertis(数据库连接信息)app...原创 2015-10-28 10:29:00 · 43746 阅读 · 8 评论