
Spring
文章平均质量分 71
Spring框架
zero__007
这个作者很懒,什么都没留下…
展开
-
深入mybatis:Creating a new SqlSession到查询语句耗时长问题
转载自:https://guisu.blog.csdn.net/article/details/136236476?转载 2024-05-26 10:12:49 · 905 阅读 · 0 评论 -
记一次生产事故
转载自:https://juejin.cn/post/7311167273650454580。转载 2024-05-07 09:56:41 · 83 阅读 · 0 评论 -
由 RedisTemplate 事务 enableTransactionSupport 引发的血案
转载自:https://carlzone.blog.csdn.net/article/details/108629864在最近的项目当中因为使用了类似字典表的数据,所以使用的 Spring Farmework 当中的 Cache 抽象,通过 Redis 来做为缓存。因为原有项目当中配置了 Redis,而且项目是基于 Spring Boot 构建的,并没有去除 Redis 的自动依赖(RedisAutoConfiguration)。导致有些 Redis 的有些类是基于项目中自己配置的 RedisTempl转载 2022-01-07 21:13:13 · 1540 阅读 · 0 评论 -
Spring事务源码解析
通过这个接口,Spring为各个平台如JDBC、Hibernate等都提供了对应的事务管理器,但是具体的实现就是各个平台自己的事情了。从上面可知,方法级别上的注解会覆盖类级别上的注解,两个findTransactionAttribute方法都在AnnotationTransactionAttributeSource实现,Spring并不直接管理事务,而是提供了多种事务管理器,它们将事务管理的职责委托给JDBC或者JTA等持久化机制所提供的相关平台框架的事务来实现。Spring的事务属于逻辑事务。原创 2024-02-05 22:15:00 · 1040 阅读 · 1 评论 -
Spring Boot微服务性能降九成!用Arthas定根因
大家在自定义 Feign 的编解码器时,如果用到了 SpringEncoder / SpringDecoder,应避免 HttpMessageConverters 的重复初始化。如果不需要使用那些默认的 HttpMessageConverter,可以在初始化 HttpMessageConverters 时将第一个入参设置为 false,从而不初始化那些默认的 HttpMessageConverter。另外,应该了解不同的部署方式在类加载器频繁查找和加载资源时是存在性能差异的。转载 2024-01-26 16:08:31 · 326 阅读 · 0 评论 -
Spring Boot 中自定义异常处理
转载自:https://blog.csdn.net/u013360850/article/details/93101903Spring Boot 中提供了默认的异常处理,但是对于应用来说,这些信息并不应该直接返回或者不够明确,需要结合自己的情况进行定制。当两种方式都实现时,HandlerExceptionResolver要先于ControllerAdvice执行。转载 2023-12-22 22:00:00 · 174 阅读 · 0 评论 -
springboot+validation的参数验证
转载自:https://blog.csdn.net/weixin_42236404/article/details/105653432前言参数校验在日常开发时是很常用的操作。为了避免null指针、非法数据存入数据库,我们通常要进行参数校验。导包只需要spring-boot-starter-validation和web即可 <dependency> <groupId>org.springframework.boot</groupId>转载 2021-07-25 11:50:13 · 503 阅读 · 0 评论 -
Spring声明式事务注意事项
@Transactional 生效原则 1除非特殊配置(比如使用 AspectJ 静态织入实现 AOP),否则只有定义在 public 方法上的 @Transactional 才能生效。@Transactional 生效原则 2必须通过代理过的类从外部调用目标方法才能生效。@Transactional 生效原则 3第一,只有异常传播出了标记了 @Transactional 注解的方法,事务才能回滚;默认情况下,出现 RuntimeException(非受检异常)或 Error 的时候,Sprin原创 2021-07-11 22:15:53 · 382 阅读 · 1 评论 -
Springboot 启动扩展点
1.背景Spring的核心思想就是容器,当容器refresh的时候,外部看上去风平浪静,其实内部则是一片惊涛骇浪,汪洋一片。Springboot更是封装了Spring,遵循约定大于配置,加上自动装配的机制。很多时候我们只要引用了一个依赖,几乎是零配置就能完成一个功能的装配。我非常喜欢这种自动装配的机制,所以在自己开发中间件和公共依赖工具的时候也会用到这个特性。让使用者以最小的代价接入。想要把自动装配玩的转,就必须要了解spring对于bean的构造生命周期以及各个扩展接口。当然了解了bean的各个生命周转载 2021-06-26 21:47:56 · 226 阅读 · 0 评论 -
@Value(“#{}“) 与 @Value(“${}“) 的区别
@Value("#{}")@Value("#{}")表示SpEl表达式,通常用来获取bean的属性,或者调用bean的某个方法。当然还有可以表示常量@RestController @RequestMapping("/login") @Component public class LoginController { @Value("#{1}") private int number; //获取数字 1 @Value("#{'Spring Expressi原创 2021-03-23 10:50:20 · 1070 阅读 · 0 评论 -
处理器拦截器HandlerInterceptor
转载自:https://blog.csdn.net/jack__frost/article/details/71158139 Spring MVC允许通过处理拦截拦截web请求,进行前置处理和后置处理。处理拦截是在Spring的web应用程序上下文中配置的,因此它们可以利用各种容器特性,并引用容器中声明的任何Bean。处理拦截是针对特殊的处理程序映射进行注册的,因此它只拦截通过这些处理程序映...转载 2018-04-21 13:47:50 · 2936 阅读 · 0 评论 -
Spring Boot 属性配置文件
转载自: https://blog.csdn.net/qq_21387171/article/details/53876721 https://blog.csdn.net/catoop/article/details/50548009 http://blog.didispace.com/springbootproperties/自定义属性与加载 在application.pro...转载 2018-04-21 18:34:50 · 636 阅读 · 0 评论 -
ResponseBodyAdvice与RequestBodyAdvice
转载自:https://blog.csdn.net/ai_xiangjuan/article/details/79837712ResponseBodyAdvice主要作用是响应体写出之前做一些处理。@Order(1) @ControllerAdvice(basePackages = "com.github") public class MyResponseBodyAdvic...转载 2018-06-10 19:26:19 · 2125 阅读 · 0 评论 -
Spring Boot处理@RequestMapping注解
要了解Spring MVC是怎么把@RequestMapping注解的方法以及类关联到相应的url上,首先需要看下AbstractHandlerMethodMapping:public abstract class AbstractHandlerMethodMapping&lt;T&gt; extends AbstractHandlerMapping implements Initia...原创 2018-06-10 17:44:29 · 2801 阅读 · 0 评论 -
Spring注册Bean到IOC容器
使用BeanDefinitionRegistryPostProcessor:@Componentpublic class DefinitionRegistryPostProcessor implements BeanDefinitionRegistryPostProcessor { @Override public void postProcessBeanFactory(ConfigurableListableBeanFactory arg0) throws BeansExceptio原创 2020-06-27 18:36:36 · 318 阅读 · 0 评论 -
@InitBinder
转载自: https://blog.csdn.net/ai_xiangjuan/article/details/79842385 https://blog.csdn.net/ai_xiangjuan/article/details/79696639 @InitBinder用于在@Controller中标注于方法上,表示为当前控制器注册一个属性编辑器,只对当前的Controller...原创 2018-05-27 00:33:31 · 12859 阅读 · 0 评论 -
三问Spring事务:解决什么问题?如何解决?存在什么问题?
1. 解决什么问题让我们先从事务说起,“什么是事务?我们为什么需要事务?”。事务是一组无法被分割的操作,要么所有操作全部成功,要么全部失败。我们在开发中需要通过事务将一些操作组成一个单元,来保证程序逻辑上的正确性,例如全部插入成功,或者回滚,一条都不插入。作为程序员的我们,对于事务管理,所需要做的便是进行事务的界定,即通过类似begin transaction和end transaction的操作来界定事务的开始和结束。下面是一个基本的JDBC事务管理代码:// 开启数据库连接Connection转载 2021-02-26 14:12:34 · 444 阅读 · 0 评论 -
Controller层设置切面的三种方式
1.自定义PointcutAdvisor@Target({ElementType.METHOD, ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Inheritedpublic @interface AopAnnotation {}public class CustomizePointcutAdvisor extends DefaultPointcutAdvisor { private static原创 2021-02-09 19:29:41 · 5352 阅读 · 0 评论 -
实用:优雅设计接口版本号
一般来说,系统上线以后,需求仍会发生变动,功能也会迭代更新。可能是接口参数发生变更,也有可能是业务逻辑需要调整,如果直接在原来的接口上进行修改,必然会影响原有服务的正常运行。常见的解决方案,是在接口路径中加入版本号用于区分,此外还可以在参数甚至 header 里带上版本号。这里以在请求路径中带上版本号为例,如:http://IP:PORT/api/v1/test ,v1 即代表的是版本号。当然了,可以像这样,直接写死在 @RequestMapping(“api/v1/test”)属性中,不过下面提供了更为转载 2021-01-31 18:40:18 · 1717 阅读 · 0 评论 -
Springboot处理CORS跨域请求的三种方法
Springboot跨域问题,是当前主流web开发人员都绕不开的难题。但我们首先要明确以下几点跨域只存在于浏览器端,不存在于安卓/ios/Node.js/python/ java等其它环境跨域请求能发出去,服务端能收到请求并正常返回结果,只是结果被浏览器拦截了。之所以会跨域,是因为受到了同源策略的限制,同源策略要求源相同才能正常进行通信,即协议、域名、端口号都完全一致。浏览器出于安全的考虑,使用 XMLHttpRequest对象发起 HTTP请求时必须遵守同源策略,否则就是跨域的HTTP请求,默认情转载 2021-01-31 18:17:59 · 629 阅读 · 0 评论 -
Spring事务介绍
转载自:https://www.cnblogs.com/yixianyixian/p/8372832.html文章目录1.核心接口1.1 事务管理器1.1.1 JDBC事务1.1.2 Hibernate事务1.1.3 Java持久化API事务(JPA)1.1.4 Java原生API事务1.2 基本事务属性的定义1.2.1 传播行为1.2.2 隔离级别1.2.2.1并发事务引起的问题1.2.2.2...转载 2019-04-25 21:12:19 · 250 阅读 · 1 评论 -
Spring中使用mybatis
文章目录依赖引入配置文件Mapper层语法示例依赖引入 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> ...原创 2019-12-09 12:22:44 · 208 阅读 · 0 评论 -
HandlerMethodArgumentResolver与HandlerMethodReturnValueHandler
转载自: https://blog.csdn.net/nnsword/article/details/76260355 https://blog.csdn.net/Rylan11/article/details/79433192HandlerMethodArgumentResolver是用来为处理器解析参数的,主要用在HandlerMethod中,每个Resolver对应一种类型的...转载 2018-05-27 18:31:49 · 660 阅读 · 0 评论 -
Spring中的设计模式
文章目录模板方法(Template Method)策略(Strategy)简单工厂工厂方法(Factory Method)单例模式(Singleton)适配器(Adapter)代理(Proxy)装饰模式(Decorator)观察者(Observer)模板方法(Template Method)模板方法(template method)就在spring中被大量使用,如:jdbcTemplate,h...转载 2019-11-18 20:18:30 · 133 阅读 · 0 评论 -
浅析AOP源码(四)
转载自:https://blog.csdn.net/luanlouis/article/details/51155821 1、Spring内部创建代理对象的过程 在Spring的底层,如果配置了AOP,Spring会为每一个Bean创建一个对应的ProxyFactoryBean的FactoryBean来创建某个对象的代理对象。 假定有一个接口TicketService及其实现类Rai...转载 2019-07-19 16:36:09 · 158 阅读 · 0 评论 -
浅析AOP源码(三)
转载自: https://blog.csdn.net/moreevan/article/details/11977115/ https://blog.csdn.net/qq_38182963/article/details/78747404 Spring提供了两种方式来生成代理对象: JDKProxy和Cglib,具体使用哪种方式生成由AopProxyFactory根据AdvisedSu...转载 2018-05-19 16:32:11 · 219 阅读 · 0 评论 -
浅析AOP源码(二)
转载自:https://blog.csdn.net/qq_38182963/article/details/78759574 上一篇介绍了AOP代理对象的生成方式中的ProxyFactoryBean,这篇接着分析一下基于注解实现的AOP怎么生成代理对象。 首先看下关键类AnnotationAwareAspectJAutoProxyCreator,该类实现了InstantiationAw...转载 2018-05-19 16:27:52 · 185 阅读 · 0 评论 -
浅析AOP源码(一)
转载自: https://blog.csdn.net/moreevan/article/details/11977115/ https://blog.csdn.net/qq_38182963/article/details/78747404 AOP(Aspect-Oriented Programming)面向切面的编程,在平时的开发过程中,AOP其实用到的地方一般有: ①用来做日...转载 2018-05-19 16:21:30 · 1172 阅读 · 0 评论 -
工厂Bean与普通Bean循环依赖
转载自: http://ifeve.com/%E8%AE%BAspring%E4%B8%AD%E5%BE%AA%E7%8E%AF%E4%BE%9D%E8%B5%96%E7%9A%84%E6%AD%A3%E7%A1%AE%E6%80%A7%E4%B8%8Ebean%E6%B3%A8%E5%85%A5%E7%9A%84%E9%A1%BA%E5%BA%8F%E5%85%B3%E7%B3%BB/ 结论:转载 2017-12-20 19:10:02 · 667 阅读 · 0 评论 -
BeanFactory和FactoryBean
转载自:https://www.cnblogs.com/aspirant/p/9082858.html BeanFactory是个Factory,也就是IOC容器或对象工厂,FactoryBean是个Bean。 在Spring中,所有的bean都是由BeanFactory(也就是IOC容器)来进行管理的。如XMLBeanFactory就是一种典型的BeanFactory。常用的Appl...转载 2019-06-11 21:37:18 · 5313 阅读 · 0 评论 -
Spring中的循环依赖
在前面 Spring Bean加载过程(二) 文章中,分析了AbstractAutowireCapableBeanFactory#doCreateBean创建Bean的几个过程: createBeanInstance,实例化对象,实际上就是调用对应的构-造方法构造对象; populateBean,填充属性,对spring xml中指定的property进行setter; initi原创 2017-12-07 11:02:53 · 315 阅读 · 0 评论 -
Spring Bean加载过程(二)
在前面http://blog.csdn.net/zero__007/article/details/77264245文章中,分析了在refresh()方法中obtainFreshBeanFactory()执行完后所有的BeanDefinition已经初始化好了。 之后会调用所有注册的BeanFactoryPostProcessor的Bean:invokeBeanFactoryPostProcess原创 2017-09-19 19:32:13 · 515 阅读 · 0 评论 -
Spring Bean加载过程(一)
转载自: http://blog.csdn.net/chjttony/article/details/6248682 http://blog.csdn.net/chjttony/article/details/6263347 http://blog.csdn.net/chjttony/article/details/6278627转载 2017-08-16 18:50:25 · 734 阅读 · 0 评论 -
@Before @Around @After 等 advice 的执行顺序
转载自:https://blog.csdn.net/rainbow702/article/details/52185827在一个方法只被一个aspect类拦截时,aspect类内部的 advice 将按照以下的顺序进行执行:正常情况:异常情况:当有多个aspect时,可以给aspect添加@Order注解值越小的 aspect 越先执行:...转载 2019-04-20 13:54:06 · 409 阅读 · 0 评论 -
AOP
AOP是Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。也可以意为面向行为编程,是函数式编程的一种衍生范型。AOP中的基本概念和术语。1、切面(Aspect) 切面就是一个抽象出来的功能模块的实现,例如上述安全性检查,可以把这个功能从系统中抽象出来,用一个独立的模块描述,这个原创 2015-07-05 20:08:28 · 742 阅读 · 0 评论 -
IOC
对象间存在依赖关系。假如A组件调用了B组件的方法,就可以称A组件依赖于B组件。通过使用依赖注入,Java EE应用中的各种组件不需要以硬编码方式耦合在一起,甚至无需使用工厂模式。当某个Java 实例需要其他Java 实例时,系统自动提供所需要的实例,无需程序显示获取,这种自动提供java实例称之为依赖注入,也可以称之为控制反转(Inversion of Control IoC)。 其原创 2015-07-05 19:06:11 · 388 阅读 · 0 评论 -
Servlet 3.0异步处理
Servlet 3.0 引入了异步处理请求的能力,使线程可以返回到容器,从而执行更多的任务。当开始异步处理请求时,另一个线程或回调可以或者产生响应,或者调用完成( complete)或请求分派( dispatch),这样,它可以在容器上下文使用 AsyncContext.dispatch 方法运行。一个典型的异步处理事件顺序是: 1. 请求被接收到,通过一系列如用于验...原创 2015-10-01 11:02:49 · 660 阅读 · 0 评论 -
DispatcherServlet解读
SpringMVC的核心就是DispatcherServlet,DispatcherServlet实质也是一个HttpServlet。DispatcherSevlet负责将请求分发,所有的请求都有经过它来统一分发。 大致看下SpringMVC请求处理的流程: 用户向服务器发送请求,请求会到DispatcherServlet,DispatcherServlet 对请求URL进行解析,得...转载 2019-03-18 21:10:51 · 57631 阅读 · 4 评论 -
tomcat中 server.xml配置详解
转载自:http://blog.sina.com.cn/s/blog_4b3c1f950100ol9b.htmlServer ------port:指定一个端口,这个端口负责监听关闭tomcat的请求 shutdown:指定向端口发送的命令字符串Service------name:指定service的名字Connector--port:指定服务器端要创建...转载 2015-07-04 13:06:37 · 437 阅读 · 0 评论 -
Servlet的一些知识
Servlet核心接口是: GenericServlet HttpServlet ServletRequest HttpServletRequest ServletResponse HttpServletResponseServlet装载分成三种情形: Servlet容器启动时自动装载某些Servlet; 在Servle...原创 2015-07-04 16:44:06 · 325 阅读 · 0 评论