Spring
文章平均质量分 82
pan_mlpan
没有伞的孩子要努力奔跑
展开
-
Spring 自定义 Converter
Spring 自定义 Converter在上节 Spring 之请求参数解析原理 中有说到关于参数的类型转换是依靠 WebDataBinder(数据绑定器,进行数据绑定的工作)中的 conversionService(负责数据类型的转换和格式化工作 )中的各个converters (负责各种 数据类型的转换 工作)来处理的,这节来说说它~关于Spring的核心元素 DispatchServlet 请查看:Spring 原理之 DispatchServlet 原理关于 Spring 之请求参数原创 2022-05-23 19:08:01 · 879 阅读 · 0 评论 -
Spring 自定义 ArgumentResolver
Spring 自定义 ArgumentResolver在 Spring 之请求参数解析原理(实体类传参封装解析) 这篇博客中说到,后端接口传递参数的解析就是对参数进行逐一处理,找到可以处理该参数的 resolver,然后调用核心 resolveArgument 方法进行参数解析Resolver 介绍对于后端接口传递参数,逐一判断 this.resolvers.supportsParameter(parameter) 是否为 true,默认的 this.resolvers 列表为下面的26个,分别对不原创 2022-05-23 19:03:06 · 789 阅读 · 0 评论 -
Spring 之请求参数解析原理(实体类传参封装解析)
Spring 之请求参数解析原理(实体类传参解析)之前实习的时候有做一个需要反射执行类中方法的组件,对该方法支持的参数类型的映射与解析当时考虑了很多参数类型, 参数类型有 普通类型 数组 实体类 泛型 等更多组合的复杂类型,对于反射执行的方法若重载方法很多,其实是需要确定参数类型来找到对应执行的方法那么在Spring项目中,对于传参,其实也是可以直接以实体类的形式传参,就很好奇,其是怎么做的?所以看了看源码,分析记录一下关于Spring的核心元素 DispatchServlet 请查看原创 2022-05-23 17:43:48 · 2904 阅读 · 1 评论 -
Spring 请求参数类型转换解析(@DateTimeFormat 、自定义Convert)
Spring 请求参数类型转换解析(@DateTimeFormat 、自定义Convert)在上节 Spring 之请求参数解析原理 中有说到关于参数的类型转换是依靠 WebDataBinder(数据绑定器,进行数据绑定的工作)中的 conversionService(负责数据类型的转换和格式化工作 )中的各个converters (负责各种 数据类型的转换 工作)来处理的,这节来说说它~关于Spring的核心元素 DispatchServlet 请查看:Spring 原理之 Dispatc原创 2022-05-23 17:40:33 · 1782 阅读 · 0 评论 -
SpringBoot 接入支付宝 SDK(支付宝支付你会吗?)
SpringBoot 接入支付宝SDK最近有好奇网页/手机扫码付款支付宝如何实现的?然后去学习了一下, 发现还是很简单的~,记录一下吧(下次就直接拿来用了)前言我在学习的时候,发现与支付宝SDK对接,最麻烦的却是接入前的一些准备工作,但是好在官网其实很详细了大家可以去 网页 & 移动接入 详细的进行接入前的准备工作(电脑网站支付 手机网站支付 网页支付)具体就是几个步骤:(详细的配置这里就不说明了,都很清晰)创建应用在 创建应用 中创建应用并提交审核,审核通过后会生成应用 唯原创 2022-05-05 19:43:12 · 2610 阅读 · 0 评论 -
Spring 原理之 Bean生命周期
Spring 原理之 Bean生命周期前言在面试的时候,Bean的生命周期一般都会被问到,之前有整理过 Spring 的原理之Ioc,但是 没有对Bean的生命周期流程单独汇总说明下面介绍一下,也更方便自己掌握。Bean生命周期总图:看这个图很复杂,其实很简单,Bean的生命周期就分为以下几个步骤:(是不是real简单~)实例化(Instantiation)属性赋值(populate)初始化(Initialization)销毁(Destruction)在 Spring DI 运行原创 2022-04-21 14:53:29 · 205 阅读 · 0 评论 -
Spring 最新漏洞修复
Spring 最新漏洞修复描述Spring 社区 发布了一个最新的漏掉,如下:漏洞描述:攻击者可以利用该漏洞,在未授权的情况下远程执行命令。问题处理1、影响范围该漏洞的利用需要满足下面的条件:JDK 9 +使用Apache Tomcat部署(Tomcat 10.0.19、9.0.61、8.5.78 和更早的版本已知易受攻击)使用WAR方式打包依赖 spring-webmvc 或 spring-webflux即该漏洞影响在 JDK 9+ 上运行的 Spring MVC 和 Spri原创 2022-04-18 15:14:11 · 2910 阅读 · 0 评论 -
SpringBoot关于@Async线程池配置
SpringBoot关于@Async线程池配置我们在Spring项目的时候,会用到异步注解 @Async 注解,从 Spring原理之@Async 我们可以知道其实他底层用到的默认的所谓的线程池并不是真的线程池,每次调用都会创建一个新的线程,那么我们如何来修改这个默认的线程池或者说使用我们自定义的线程池呢?1、修改@Async默认线程池关于@Async的原理,可以查看 Spring原理之@Async 这篇博客,这里不在阐述关于修改 @Async默认的线程池 ,我们仅仅需要实现一个 AsyncConf原创 2022-02-23 09:34:42 · 11671 阅读 · 3 评论 -
SpringBoot关于文件上传配置的几种方式
SpringBoot关于文件上传配置的几种方式在进行SpringBoot项目文件临时目录位置及其最大文件传输大小等相关配置的时候,总结几种可以进行配置的方式1、@MultipartConfig 注解在 javax.servlet.annotation 包里有一个MultipartConfig 注解来进行文件上传的相关配置源码:package javax.servlet.annotation;@Target(ElementType.TYPE)@Retention(RetentionPolicy原创 2022-02-21 11:23:27 · 4535 阅读 · 0 评论 -
javax.validation 包里@NotNull等注解的使用
javax.validation 包里@NotNull等注解的使用在做项目的时候,对pojo和传入的参数进行校验,如果是代码编写,需要很多if来判断其实可根据一些校验的注解来实现我们的参数校验,主要介绍一下常用的 javax.validation 这个仓库的使用,这里总结一下1、导包在项目的pom.xml 文件夹中导入包 <!-- https://mvnrepository.com/artifact/javax.validation/validation-api --> &l原创 2022-01-04 13:19:31 · 18352 阅读 · 0 评论 -
Spring原理之@Async
@Async前言在开发过程中,我们会遇到很多使用线程池的业务场景,例如异步短信通知、异步记录操作日志。大多数使用线程池的场景,就是会将一些可以进行异步操作的业务放在线程池中去完成。例如在生成订单的时候给用户发送短信,生成订单的结果不应该被发送短信的成功与否所左右,也就是说生成订单这个主操作是不依赖于发送短信这个操作,所以我们就可以把发送短信这个操作置为异步操作。那么本文就是来看看Spring中提供的优雅的异步处理方案:在Spring3中,Spring中引入了一个新的注解@Async,这个注解让我们在原创 2021-04-25 09:52:36 · 2523 阅读 · 0 评论 -
Spring 原理 之 @Transactional注解
@Transactional注解如何实现的@EnableTransactionManagement@EnableTransactionManagement注解看起来并没有特别之处,都是一些属性的配置。但它却通过@Import引入了另一个配置TransactionManagentConfigurationSelector。@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documented@Import({Transac原创 2021-04-16 11:24:18 · 404 阅读 · 0 评论 -
Spring原理之AOP阶段
Spring AOP阶段AOP时序图总体的AOP流程AOP是在后置处理器中进行实现的,BanProcessor相关的实现类进行postProcessAfterInitialization方法的重写AbstractAutoProxyCreator类实现重写了该方法,核心是实现了wrapIfNecessary方法wrapIfNecessary核心方法逻辑先确认是否已经创建过代理对象(earlyProxyReferences,避免对代理对象在进行代理)如果没有,则考虑是否需要进行代理(通过wra原创 2021-04-15 11:36:40 · 1317 阅读 · 0 评论 -
Spring DI 运行流程
Spring DI 运行流程Spring DI 时序图当SpringIOC容器再上下文监听器处完成了Bean定义资源的定位、载入和解析注册,Ioc容器就可以管理Bean定义的相关数据了。但是此时Ioc容器还没有对所管理的Bean进行依赖注入,依赖注入在以下两种情况下发生:用户第一次调用getBean()方法的时候,Ioc容器触发依赖注入当用户在配置文件中将元素配置了lazy-init = false 属性的时候,既让容器在解析注册Bean定义的时候进行预实例化,触发依赖注入。1、doGetB原创 2021-04-14 21:19:34 · 217 阅读 · 0 评论 -
Sping原理之 SpringMVC运行流程
Spring MVC 运行核心流程运行时序图总体的流程:用户发送请求至前端控制器DispatcherServlet,调用doDispatch()方法HandlerMapping处理器映射器根据请求url得到处理器执行链HandlerExecutionChain(包含拦截器)根据当前处理器找到他的HandlerAdapter(适配器)通过HandlerAdapter处理器适配器调用处理器拦截器的preHandle先执行适配器执行handler方法1)、ModelAt原创 2021-04-13 11:28:43 · 99 阅读 · 0 评论 -
Spring原理之Ioc启动流程
基于XML 文件的 Spring Ioc 的启动流程IOC时序图spring的启动是建筑在servlet容器之上的,所有web工程的初始位置就是web.xml,它配置了servlet的上下文(context)和监听器(Listener)web.xml中一般需要配置前端控制器与上下文监听器,如下:<!--dispatcherServlet的配置,这个servlet主要用于前端控制,这是springMVC的基础--> <servlet> <serv原创 2021-04-13 11:21:19 · 400 阅读 · 0 评论 -
Spring 原理之 DispatchServlet 原理
Spring MVC 的DispatchServlet解析Spring MVC 时序图DispatchServlet 的父类是 FrameworkServlet ,FrameworkServlet的父类是HttpServletBean核心流程:寻找DispatchServlet的init()方法,定位到其父类的父类HttpServletBean的init()方法定位配置文件位置,加载配置信息initServletBean调用DispatchServlet的父类FrameworkS原创 2021-04-13 11:18:03 · 1903 阅读 · 0 评论 -
Spring启动流程
Spring的启动流程spring的启动过程其实就是其IoC容器的启动过程,对于web程序,IoC容器启动过程即是建立上下文的过程。Spring项目的标准配置就是在web.xml文件中配置前端控制器与加载spring配置文件,初始化上下文如果不指定配置文件位置,就会去找一个默认的文件位置,这个文件就是 /WEB-INF/springDispatcherServlet-servlet.xml 文件。如果不指定配置文件,可以在web应用下的WEB-INF下创建指定文件即可。<!--前端控制器的配置原创 2021-01-17 20:55:21 · 1129 阅读 · 1 评论 -
Spring面试题(2020)
Spring1、Spring是什么?Spring是一个轻量级的IoC和AOP容器框架。是为Java应用程序提供基础性服务的一套框架,目的是用于简化企业应用程序的开发,它使得开发者只需要关心业务需求。主要包括以下七个模块:Spring Context:提供框架式的Bean访问方式,以及企业级功能(JNDI、定时任务等);Spring Core:核心类库,所有功能都依赖于该类库,提供IOC和DI服务;Spring AOP:AOP服务;Spring Web:提供了基本的面向Web的综合特性,提供对常原创 2021-01-08 22:27:17 · 460 阅读 · 0 评论 -
Spring请求运行流程
流程1、用户发送请求至前端控制器DispatcherServlet2、DispatcherServlet收到请求调用HandlerMapping处理器映射器查找Handler。3、处理器映射器根据请求url找到具体的处理器Adapter,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。4、DispatcherServlet通过HandlerAdapter处理器适配器调用处理器5、HandlerAdapter调用处理器Handler6、Handler执行完原创 2021-01-03 18:31:19 · 1531 阅读 · 0 评论 -
Spring与MVC整合
Spring与SpringMVC整合目的:分工明确SpringMVC的配置文件就来配置和网站转发逻辑以及网站功能相关的(视图解析器,文件上传解析器,支持ajax…)Spring的配置文件来配置和业务有关的(事务控制、数据源 …)1、当有多个xml文件的时候,若想同时起作用。(合并配置文件)(这种方式相当于进行了合并,等于只要一个ioc容器)例如:在springmvc.xml文件中可以加上以下代码,就可以让spring.xml文件配置生效。(springMVC和Spring分容器)在web.原创 2021-01-03 18:28:26 · 87 阅读 · 0 评论 -
Spring项目基本配置
1、前端控制器(一个servlet)在web.xml文件下配置。若没有init-param指定配置文件,需要在WEB-INF下建一个与这个servlet名相同的xml文件。例如:下面一个例子若没有init-param的话,需要建立一个 springMVC-servlet.xml 文件2、在1所建立或者指定的配置文件中配置视图解析器和包扫描包扫描:用了context:include-filter时,要禁止默认行为 use-default-filters=“false”用了context:原创 2021-01-03 18:23:45 · 353 阅读 · 0 评论 -
Spring--4--aop
Aop的概念Aop(Aspect-Oriented Programing):面向方面编程,是面向对象编程(oop)的一个补充,目前是一种成熟的编程模式。OOP(Object-Oriented Programing):面向对象编程。Aop采用横向抽取机制,将分散到各个方法的重复代码提取出来,然后在程序编译或者运行时,再将这些提取出来的代码应用到指定方法的指定位置上运行。是OOP的延伸和补充。Aop的术语Aspect(切面):封装的用于横向插入系统功能(如事务或者日志等等)的类。Joinpoint原创 2021-01-02 15:26:26 · 152 阅读 · 0 评论 -
Spring--3--ioc
IOC(Inversion of controll) 控制反转控制:资源获取的方式。主动式:(要什么资源就自己创建即可)BookServlet{BookService book =new BookService();AirPlane airplane=new Airplane(); //复杂对象的创建是比较庞大的工程}被动式:(资源的获取不是我们创建,而是交给一个容器创建和设置)BookServlet{BookService book;public void set(){原创 2020-12-29 11:38:48 · 211 阅读 · 0 评论 -
Spring--2--bean
Bean的配置通过properties文件或者xml文件进行配置文件的编写。配置文件标配:<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.原创 2020-12-29 10:59:29 · 75 阅读 · 0 评论 -
Spring--1--basic
Spring的概念服务器一般采用三层体系架构,分别为表示层(Web层)、业务逻辑层(Service层)、持久化层(Dao层),Spring对每一层都提供了技术支持。在表示层提供了与Sturts等框架的整合在业务逻辑层可以管理事务、记录日志等在持久化层乐意整合Hibernate、JdbcTemplate等技术Spring的优点spring具有简单、可测试和松耦合等特点非侵入式设计依赖注入:反向控制(IOC)方便解耦、简化开发支持AOP支持声明式事务处理方便程序测试方便集成各种优秀框原创 2020-12-28 22:54:17 · 156 阅读 · 0 评论