
spring全家桶
文章平均质量分 80
狂奔的蜗牛Evan
hello world
展开
-
HandlerMethodArgumentResolver用于统一获取当前登录用户
环境:SpringBoot 2.0.4.RELEASE需求:很多Controller方法,刚进来要先获取当前登录用户的信息,以便做后续的用户相关操作。准备工作:前端每次请求都传token,后端封装一方法tokenUtils.getUserByToken(token),根据token解析得到currentUserInfo。这是一个常见的业务需求,为实现这个需求,有以下几种解决方案:一、最原始直接即,每个Controller开始,先调用tokenUtils.getUserByToken(toke..转载 2022-02-15 15:26:46 · 321 阅读 · 0 评论 -
Spring官方为什么建议构造器注入?
前言本章的内容主要是想探讨我们在进行 Spring 开发过程当中,关于依赖注入的几个知识点。感兴趣的读者可以先看下以下问题: @Autowired,@Resource,@Inject三个注解的区别 当你在使用@Autowired时,是否有出现过Field injection is not recommended的警告?你知道这是为什么吗? Spring 依赖注入有哪几种方式?官方是怎么建议使用的呢? 如果你对上述问题都了解,那我个人觉得你的开发经验应该是不错的????。转载 2021-12-07 22:29:39 · 253 阅读 · 0 评论 -
过滤器(Filter)与拦截器(Interceptor )区别
目录过滤器(Filter) 拦截器(Interceptor) 拦截器(Interceptor)和过滤器(Filter)的区别 拦截器(Interceptor)和过滤器(Filter)的执行顺序 拦截器(Interceptor)使用 过滤器(Filter)使用 拦截器(Interceptor)和过滤器(Filter)的一些用途 demo 总结 参考资料正文回...转载 2019-12-30 18:31:35 · 438 阅读 · 0 评论 -
Spring Boot实战:拦截器与过滤器
一、拦截器与过滤器 在讲Spring boot之前,我们先了解一下过滤器和拦截器。这两者在功能方面很类似,但是在具体技术实现方面,差距还是比较大的。在分析两者的区别之前,我们先理解一下AOP的概念,AOP不是一种具体的技术,而是一种编程思想。在面向对象编程的过程中,我们很容易通过继承、多态来解决纵向扩展。但是对于横向的功能,比如,在所有的service方法中开启事务,或者统一记录日志等功能...转载 2019-12-30 18:48:12 · 199 阅读 · 0 评论 -
spring 容器初始化 bean 和销毁三种方式
Spring 允许 Bean 在初始化完成后以及销毁前执行特定的操作。下面是常用的三种指定特定操作的方法:通过实现InitializingBean/DisposableBean 接口来定制初始化之后/销毁之前的操作方法; 通过<bean> 元素的 init-method/destroy-method属性指定初始化之后 /销毁之前调用的操作方法; 在指定方法上加上@PostCon...原创 2020-01-13 19:00:02 · 556 阅读 · 0 评论 -
spring boot RESTFul API拦截 以及Filter和interceptor 、Aspect区别
spring boot RESTFul API拦截 以及Filter和interceptor 、Aspect区别 今天学习一下RESTFul api拦截 大概有三种方式一、通过Filter这个大家很熟悉了吧,这是java规范的一个过滤器,他会拦截请求。在springboot中一般有两种配置方式。 这种过滤器拦截并不知道你用的是哪一个Co...转载 2019-12-30 18:39:38 · 607 阅读 · 0 评论 -
ApplicationContextAware使用理解
文章2:ApplicationContextAware通过它Spring容器会自动把上下文环境对象调用ApplicationContextAware接口中的setApplicationContext方法。我们在ApplicationContextAware的实现类中,就可以通过这个上下文环境对象得到Spring容器中的Bean。看到—Aware就知道是干什么的了,就是属性注入的,但是这个ApplicationContextAware的不同地方在于,实现了这个接口的bean,当spring容器初始化.转载 2020-12-30 15:46:43 · 521 阅读 · 0 评论 -
深入 Spring 系列之静态资源处理
1. 背景前一段时间,WebIDE 开源的过程中,无意间接触到webjars,觉得比较有趣,于是研究并整理了一下。webjars 是将前端的库(比如 jQuery)打包成 Jar 文件,然后使用基于 JVM 的包管理器(比如 Maven、Gradle 等)管理前端依赖的方案。webjars 的效果非常神奇。对于其用法,我们可以在 maven 项目中添加下面的依赖:<...转载 2019-12-13 19:15:17 · 327 阅读 · 0 评论 -
Spring中的InitializingBean接口的使用
InitializingBean接口为bean提供了初始化方法的方式,它只包括afterPropertiesSet方法,凡是继承该接口的类,在初始化bean的时候都会执行该方法。测试,如下:import org.springframework.beans.factory.InitializingBean;public class TestInitializingBean imple...转载 2020-01-13 17:48:17 · 308 阅读 · 0 评论 -
SpringBoot | 第七章:过滤器、监听器、拦截器
前言在实际开发过程中,经常会碰见一些比如系统启动初始化信息、统计在线人数、在线用户数、过滤敏高词汇、访问权限控制(URL级别)等业务需求。这些对于业务来说一般上是无关的,业务方是无需关系的,业务只需要关系自己内部业务的事情。所以一般上实现以上的功能,都会或多或少的用到今天准备讲解的过滤器、监听器、拦截器来实现以上功能。过滤器过滤器Filter,是Servlet的的一个实用技术了。...转载 2019-12-30 18:52:31 · 180 阅读 · 0 评论 -
Spring入门——事务管理Transaction Manager
最近有个朋友去面试JAVA,问了我spring事务的事情,虽然之前有学过,但是没有融会贯通,回答得很浅。这几天重新学习研究了下,结合《Spring实战》和网上关于spring事务的博客文章,总结一下。参考文章:Spring事务管理(详解+实例)Spring事务配置的五种方式Spring事务管理及几种简单的实现Spring中事务控制的 API介绍1、事务初识事务是逻辑上的一组操作,要么全部成功,要么全部失败。事务具有ACID特性,参考百度百科,具体如下:原子性(Atomi转载 2021-03-28 16:18:55 · 745 阅读 · 0 评论 -
使用自定义注解和springAOP捕获Service层异常,并处理自定义异常
目录一 自定义异常 二 自定义注解 三 注解切面处理类 四 使用正文回到顶部一 自定义异常/** * 自定义参数为null异常 */public class NoParamsException extends Exception { //用详细信息指定一个异常 public NoParamsException(String message){ super(message); } //用指定的详细信息和原因构造一个新的.转载 2021-03-09 17:18:17 · 1882 阅读 · 0 评论 -
SpringMVC 自定义参数解析器.
SpringMVC 自定义参数解析器.阅读目录一、简述 二、自定义参数解析器回到顶部一、简述有没有想过像 @RequestParam、@RequestBody 这些注解的工作原理呢?为什么 form 表单、application/json 的参数能够直接封装进 Bean 对象中呢?这就要说到 HandlerMethodArgumentResolver — 方法参数解析器,该接口有两个方法:public interface HandlerMethodArgumentResolve转载 2021-03-04 18:43:19 · 363 阅读 · 1 评论 -
Spring如何将@RestController的对象自动转换为json
我正在看一段代码,其中我假设spring决定在幕后使用Jackson为@RestController自动将对象转换为json@RestController @RequestMapping("/api")public class ApiController { private RoomServices roomServices; @Autowired public ApiController(RoomServices roomServices) { thi转载 2021-03-01 12:00:34 · 2242 阅读 · 0 评论 -
Spring启动慢?提速利器SpringFu来了
阿里妹导读:Spring启动慢的问题一直为广大开发者所诟病,而Spring社区新开源的项目SpringFu终于改变了这一现状。本文以SpringMVC的几种典型注解为例,通过代码示例对比SpringFu和SpringMVC的差异,并通过源码解读,分析SpringFu背后的原理。函数是应用在Serverless世界里的一种极轻量形态,每个函数通常专注提供单一功能的服务。它们相互串联,井然有序,时而成群结对的出现,在完成既定任务后又很快的消失,此起彼伏,辉映成趣,将云的灵巧与飘逸发挥得淋漓尽致。..转载 2020-12-28 15:05:39 · 1590 阅读 · 0 评论 -
Spring 如何解决循环依赖的问题(IOC原理)
先看一个循环依赖问题现象循环依赖其实就是循环引用,也就是两个或则两个以上的bean互相持有对方,最终形成闭环。比如A依赖于B,B依赖于C,C又依赖于A。如下图:如何理解“依赖”呢,在Spring中有:构造器循环依赖 field属性注入循环依赖直接上代码:构造器循环依赖@Servicepublic class A { public A(B b) { }}@Servicepublic class B { public B(C c) { .转载 2020-11-26 23:46:27 · 997 阅读 · 0 评论 -
Spring-bean的循环依赖以及解决方式
本文主要是分析Spring bean的循环依赖,以及Spring的解决方式。 通过这种解决方式,我们可以应用在我们实际开发项目中。什么是循环依赖? 怎么检测循环依赖 Spring怎么解决循环依赖 Spring对于循环依赖无法解决的场景 Spring解决循环依赖的方式我们能够学到什么?1. 什么是循环依赖?循环依赖其实就是循环引用,也就是两个或则两个以上的bean互相持有对方,最终形成闭环。比如A依赖于B,B依赖于C,C又依赖于A。如下图:注意,这里不是函数的循环调用,是对象的.转载 2020-11-26 22:47:31 · 204 阅读 · 0 评论 -
Java成神之路——CGLIB使用
什么是cglibCGLIB(Code Generator Library)是一个强大的、高性能的代码生成库。其被广泛应用于AOP框架(Spring、dynaop)中,用以提供方法拦截操作。Hibernate作为一个比较受欢迎的ORM框架,同样使用CGLIB来代理单端(多对一和一对一)关联(延迟提取集合使用的另一种机制)。为什么使用CGLIBCGLIB代理主要通过对字节码的操作,为对象引入间接级别,以控制对象的访问。我们知道Java中有一个动态代理也是做这个事情的,那我们为什么不直接使用Java动转载 2020-11-16 13:54:56 · 905 阅读 · 0 评论 -
aop代理方式引起的spring注入bean(实现类)与获取bean(实现类)出错
描述: 现象一 :A 为 接口,AImpl 为 A 的实现类,且 AImpl 受 aop 扫描,且 aop 无特殊配置 此时若:Spring 中 注入 AImpl 类型的bean,获取一样 报错 Spring 中 注入 A 类型的bean ,获取一样 成功 现象二 :B 没有实现接口,B受 aop 扫描,且 aop无特殊配置 此时若:Spring 中 注入 B 类型的bean,获取一样 成功分析...转载 2020-11-13 18:46:18 · 1360 阅读 · 1 评论 -
spring-aop前身--【aspectj】面向切面编程 强制使用cglib进行动态代理
看本篇文章之前,必须要了解动态代理的相关知识,如果不了解,请点击:https://blog.csdn.net/weixin_42275175/article/details/98044391aspectj是一个Aop组织提供的面向切面编程框架。使用方法:a:用户自己开发自己的业务类和业务方法b:用户自己开发自己的增强逻辑,增强逻辑可以卸载一个普通的Advice类中c:配置一个配置文件,告诉aspectJ,为哪些业务方法增加哪些业务逻辑。一)手动创建一个Java工程建成下面的结构层次Users转载 2020-11-13 18:49:53 · 614 阅读 · 0 评论 -
Spring AOP中的JDK和CGLib动态代理哪个效率更高?
一、背景今天有小伙伴面试的时候被问到:Spring AOP中JDK 和 CGLib动态代理哪个效率更高?二、基本概念首先,我们知道Spring AOP的底层实现有两种方式:一种是JDK动态代理,另一种是CGLib的方式。自Java 1.3以后,Java提供了动态代理技术,允许开发者在运行期创建接口的代理实例,后来这项技术被用到了Spring的很多地方。JDK动态代理主要涉及java.lang.reflect包下边的两个类:Proxy和InvocationHandler。其中,Invoca转载 2020-11-13 18:51:54 · 640 阅读 · 1 评论 -
在SpringBoot中使用AOP
文章目录声明切面类 声明切入点 切入点指示符 声明通知 环绕通知 通知顺序 通知参数 完整代码声明切面类切面,通俗的讲就是:在哪干和干什么集合;定义切面类,就是编写一个类,在类上使用注解:@Aspect;@Component注解是要将这个类交由spring管理;<span style="color:rgba(0, 0, 0, 0.75)"><span style="color:#000000"><code class="lan...转载 2020-11-13 18:38:47 · 389 阅读 · 0 评论 -
spring框架对jdk版本要求
Spring Framework 5.1.x:JDK 8-12 Spring Framework 5.0.x:JDK 8-10 Spring Framework 4.3.x:JDK 6-8官网介绍:https://github.com/spring-projects/spring-framework/wiki/Spring-Framework-Versions原文地址:https://blog.csdn.net/iroguel/article/details/93632773...原创 2020-11-05 16:12:00 · 4881 阅读 · 1 评论 -
spring事件监听(eventListener)
原理:观察者模式#spring的事件监听有三个部分组成,事件(ApplicationEvent)、监听器(ApplicationListener)和事件发布操作。事件#事件类需要继承ApplicationEvent,代码如下: 1 2 3 4 5 6 7 8 9 10 11 12...转载 2020-03-19 16:10:18 · 2017 阅读 · 0 评论 -
spring @Bean注解的使用
@Bean 的用法@Bean是一个方法级别上的注解,主要用在@Configuration注解的类里,也可以用在@Component注解的类里。添加的bean的id为方法名定义bean下面是@Configuration里的一个例子@Configurationpublic class AppConfig { @Bean public TransferService...转载 2019-11-05 15:10:09 · 246 阅读 · 0 评论 -
Spring MVC中Filter Servlet Interceptor 执行顺序
<servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> &l...转载 2019-01-08 09:17:58 · 2000 阅读 · 0 评论 -
Quartz任务中调用Spring容器中bean及动态调度任务-SchedulerFactoryBean
Quartz 是开源任务调度框架中的翘首,它提供了强大任务调度机制,同时保持了使用的简单性。Quartz 允许开发人员灵活地定义触发器的调度时间表,并可以对触发器和任务进行关联映射。此外,Quartz提供了调度运行环境的持久化机制,可以保存并恢复调度现场,即使系统因故障关闭,任务调度现场数据并不会丢失。此外,Quartz还提供了组件式的侦听器、各种插件、线程池等功能。Spring为...转载 2019-10-29 16:47:20 · 1925 阅读 · 0 评论 -
BeanFactory 简介以及它 和FactoryBean的区别(阿里面试)
BeanFactory 简介以及它 和FactoryBean的区别(阿里面试)BeanFacotry是spring中比较原始的Factory。如XMLBeanFactory就是一种典型的BeanFactory。原始的BeanFactory无法支持spring的许多插件,如AOP功能、Web应用等。ApplicationContext接口,它由BeanFactory接口派生而来,Applica...转载 2019-10-28 19:17:14 · 183 阅读 · 0 评论 -
工具类读取SpringBoot配置文件的配置内容
前言为了复用代码,我们要封装一些工具类。有时候工具类是需要一些动态的配置的,比如阿里云OSS对象存储的bucketName要能动态修改。我们可以把需要动态修改的内容放在application.properties配置文件里,然后用@Value注解读取配置信息。虽然可以动态修改配置了,但是在工具类的静态方法里是无法使用@Value读取到的配置信息的。所以,就要想办法让它可以使用。一、属性...原创 2019-07-25 14:20:21 · 6790 阅读 · 0 评论 -
spring xsd 加载问题
首先spring的xml配置,在文章头部会有http://www.springframework.org/schema/beans/spring-beans.xsd类似于这种地址。加载顺序为:1.首先在jar包中找,在jar中有个META-INF文件夹,其中有文件为spring.handlers·spring.schemas文件中会将uri的xsd文件的地址进行指定。ht...转载 2019-03-07 10:19:29 · 854 阅读 · 0 评论 -
Spring文件中的xsd文件
Spring文件中的引用的xsd文件是用于校验xml文件的格式用的。Spring是如何校验XML的:Spring默认在启动时是要加载XSD文件来验证xml文件的,所以如果有的时候断网了,或者一些开源软件切换域名,那么就很容易碰到应用启动不了。为了防止这种情况,Spring提供了一种机制,默认从本地加载XSD文件。例如:可以打开spring-context-4.3.0.RELEASE...转载 2019-03-07 09:52:17 · 2343 阅读 · 0 评论 -
项目启动,无法加载Spring xsd文件
问题的产生:有个Java项目(Jar文件),每半小时重启一次,对外提供服务。突然收到报警,早上5点半重启服务时出错,服务无法正常启动。查看启动日志,错误是 xml解析失败,无法找到xml元素的声明。具体报错日志如下:INFO: Loading XML bean definitions from class path resource [applicationContext-t...转载 2019-03-07 09:26:35 · 773 阅读 · 0 评论 -
@Autowired注解在抽象类中实效的原因分析
原文地址:https://www.cnblogs.com/jy107600/p/7490390.html@Autowired注解在抽象类中实效的原因分析 最近在工作中遇到这个问题,在抽象类中使用Autowired这个注解,注入mybatis的dao时,总是出现空指针异常,通过日志的打印,发现是这个dao注入失败为空。然后通过new出spring上下文对象,再去调用getBean...转载 2019-06-25 19:55:14 · 4535 阅读 · 2 评论