Spring
文章平均质量分 69
icarusliu81
http://liumoran.cn
展开
-
基于SpringBoot+JavaFx的CS端的个人日程及项目管理工具
因日常项目管理中有很多的事情需要记录与管理,一直未找到一个满足自己要求的工具使用,因此自己写了一个工具。最开始只是进行个人的日程管理使用,后面有一些什么样的想法就往上加了。因此目前包含有多项比较个性化的功能。由于工作特殊性,这个工具在其它地方可能没有办法很好的发挥作用,但一个Java开发人员可以很方便的参考现有实现来实现自己的一些特殊需求。原创 2017-12-13 09:25:27 · 9961 阅读 · 3 评论 -
Spring Boot静态页面配置
在使用Spring Boot时,如果页面也在同一个项目,需要添加以下配置,否则DispatchServlet会去查找Handler处理页面请求,而导致报以下的错:Could not resolve view with name 'test' in servlet with name 'dispatcherServlet'仅仅只是配置了viewResolver也不行,会报以下错误:No ma...原创 2018-09-19 09:43:52 · 745 阅读 · 0 评论 -
Spring Validation及消息国际化.md
在项目中,接收到前端或者其它客户端的调用请求时,需要对传入的参数进行校验。完成这些校验最原始的做法就是编写代码一个个参数进行判断,如判断是否为空、长度是否符合要求、格式是否符合要求等;对于一些简单的输入还好,越复杂的输入,这些校验的代码及逻辑越长,而且在校验失败后组装的返回消息也是因人而异,导致同一项目里面校验失败后返回的消息不统一,最终结果就是用户体验较差。JSR-303为这类校验提供了一个规...原创 2018-09-19 09:51:23 · 12057 阅读 · 13 评论 -
SpringBoot使用EnableWebMvc无法加载静态页面的问题解决
当在项目中使用EnableWebMvc注解时,默认情况下页面等静态资源没有办法访问到。前台将会报404,后台出现以下错误:No mapping found for HTTP request with URI [/test.html] in DispatcherServlet with name 'dispatcherServlet'但去掉这个注解即可以正常访问。为什么会有这样的区别?加En...原创 2018-09-20 19:22:02 · 3125 阅读 · 0 评论 -
Spring配置及简单实例
配置1. Web.xmla. ContextLoaderListener:配置该选项后,服务器将会自动去WEB-INF目录下面查找applicationContext.xml文件来加载Spring的相关配置;也可以使用context-param来指定其它位置,如classpath,表示的是在源文件目录下去查找applicationContext.xml文件。当然也可以指定其它名称...原创 2012-08-19 20:45:38 · 112 阅读 · 0 评论 -
Spring Cloud配置文件加载简述
Spring Cloud中配置文件的加载机制与其它的Spring Boot应用存在不一样的地方;如它引入了bootstrap.properties的配置文件,同时也支持从配置中心中加载配置文件等;本文主要聚焦在这些配置文件加载的优先级及覆盖关系的控制上,对于帮助理解Spring Cloud的配置文件加载方式有一定的帮助。1. bootstrap上下文Spring中加载的配置文件是分层级的;S...原创 2018-12-29 10:42:18 · 1774 阅读 · 0 评论 -
Spring Security OAuth专题学习-授权码模式及简化模式实例
本文是Spring Security OAuth2学习系列文章中的第四篇;主要讲解授权码模式(AuthenticationCode)及简化模式(Implicit)的使用。关于密码模式、客户端模式及Spring Security OAuth2的一些基础知识,请移步本博客文章清单进行查看。1. 简介授权码模式主要使用在客户端与授权、资源服务器不在同一公司的情况;在这种场景下,客户端并不是可信的,...原创 2019-02-27 18:42:27 · 1780 阅读 · 0 评论 -
Spring Security OAuth专题学习-背景
在公司项目中有使用到Spring Security OAuth2来对Spring Cloud集群的授权进行控制,为加深对这一技术的理解,自己花时间对OAuth的几个授权类型进行了学习,并记录如下。本文主要介绍一些oauth2相关的背景知识及常见概念。后续将针对每一种授权模式进行实战演练。1. 产生背景在传统前后端不分离的WEB应用中,一般通过Session的方式来保存用户登录状态;每一个请求...原创 2019-02-25 09:17:43 · 374 阅读 · 1 评论 -
Spring Security OAuth专题学习-密码模式及客户端模式实例
在https://blog.csdn.net/icarusliu/article/details/87911093一文中,介绍了OAuth的一些背景知识;本文将编写一个简单的示例,演示授权模式中的密码模式及客户端模式如何实现。本示例中涉及到的几个对象其关系如下图所示:密码模式一般用于用户对客户端信任度最高的情况下,因为客户端需要保存用户在授权服务器中的用户名及密码信息,客户端可以访问所有用户...原创 2019-02-25 13:48:28 · 1879 阅读 · 0 评论 -
Spring Security OAuth专题学习-密码模式JWT实现
本文是Spring Security OAuth2学习系列文章中的第三篇;主要讲解密码模式下如何使用JWT管理Token。关于密码模式非JWT的实现示例及Spring Security OAuth2的一些基础知识,请移步本博客文章清单进行查看。1. JWT是什么JWT是JSON Web Token的缩写。它与标准Token不一样的地方在于,在Token中它附加存储了很多额外的信息,如Toke...原创 2019-02-27 10:40:20 · 2368 阅读 · 0 评论 -
Spring Boot中如何使得fastjson支持JDK8新时间对象LocalDate、LocalDateTime
在Spring Boot中使用fastjson来处理JSON格式转换时,默认情况下是不支持JDK1.8中的LocalDateTime及LocalDate等时间对象的。为使其支持这些对象,可以定义相关的ObjectDeserializer来处理,并将定义的对象通过ParserConfig.getGlobalInstance().putDeserializer方法将其作为全局配置。实现如下:@Co...原创 2019-03-26 18:00:48 · 5907 阅读 · 0 评论 -
【问题处理】Spring Boot中kafka消息能力不足现象及问题解决
【本文首发于个人网址:liumoran.cn】kfaka中主要包含生产者与消费都对象,生产者往队列中推送消息,而消费者则从队列中读取并处理消息。生产者推送的过程较为简单,而对于消费者来说,情况复杂且容易受各种因素影响。1. 消费过程消费过程如下所示:Created with Raphaël 2.2.0开始是否有消息?读取消息处理消息提交offset是否停止?结束等待等待超时yesnoyes...原创 2019-04-02 19:27:44 · 2617 阅读 · 1 评论 -
Spring Boot+Vue+Spring Security OAuth2的前后端分离项目实现研究
业余在开发一个Spring Boot+Vue+Spring Security OAuth2的一个前后端分离项目,其中遇到不少如跨域、OPTIONS请求处理、PreAuthorize注解无效、Token失效处理等问题,记录如下。在此项目中,资源服务与授权服务在同一应用中,使用端口8081;前端应用使用端口8080。前端使用axios进行ajax调用。关于Spring Security OAuth...原创 2019-05-09 19:12:14 · 17964 阅读 · 4 评论 -
Spring Security OAuth专题学习-授权服务源码解读
授权服务主要完成以下四个核心功能:客户端授权关系管理;接收用户或客户端登录请求,生成accessTokenToken存储Token校验本文将从源码层面分析授权服务如何实现上述四个功能。关于Spring Oauth2的一些基础概念及示例,可参考:http://liumoran.cn/topic/myTopics/11. 概述授权服务包含有以下几个关键类:EnableAutho...原创 2019-05-24 09:37:01 · 1810 阅读 · 0 评论 -
Idea插件开发-JPA、MyBatis实体类代码生成器插件
使用Spring开发项目的过程中,习惯于使用JPA进行表的创建、数据的更新等操作,但JPA对于复杂查询的支持比较差,因此很多时候又会同时引入mybatis来进行复杂查询。再加上实体对象与传输对象分离,在开发一个简单的表单查询维护功能时,也需要创建很多的类来完成对应功能的开发,如DTO对象、数据库操作类、DTO与实体类转换器、操作服务接口、操作服务接口实现类、控制器等。每次我们新创建一个实体类,都...原创 2019-07-16 18:21:26 · 5667 阅读 · 0 评论 -
SpringBoot国际化配置分析
DispatcherServlet使得开发人员可以通过客户端的Locale来自动转换消息进行国际化;在整个国际化的过程中,主要分成两步,一是解析客户端的Locale,一是查找国际化的消息;1. 解析Locale解析Locale是通过LocaleResolver来完成的。当有请求时,DispatcherServlet查找LocaleResolver类型的Bean,如果找到,则使用它获...原创 2018-09-17 08:56:50 · 2249 阅读 · 8 评论 -
Spring异常处理方案
1. 概述主要主是将错误信息的错误码及描述信息保存到Properties文件中,然后提供工具类来读取这些错误信息并创建RestException。涉及的类图如下: 2. 错误信息定义文件# 角色role.exists=S04M001,角色名称已存在role.not.exists=S04M002,角色({})不存在# 用户user.username.not.exits...原创 2018-07-03 20:01:42 · 915 阅读 · 0 评论 -
8 Spring Boot返回数据及异常统一封装
项目开发中,一般情况下对数据返回的格式可能会有一个统一的要求,一般会包括状态码、信息及数据三部分。举个例子,假设规范要求数据返回的结构如下所示:{"data":[{"id":5,"userId":5,"name":"test1","articleCount":0}],"errorMessage":"","statusCode&quo原创 2018-05-30 20:07:03 · 15052 阅读 · 11 评论 -
Spring Boot测试打桩-Mockito在Spring Boot中的常见测试场景
本文主要分析Mockito在Spring测试中的应用;原创 2017-12-21 10:04:35 · 12188 阅读 · 0 评论 -
SpringMVC源码分析
SpringMVC源码,包含Servlet功能简介、MVC初始化及响应生效过程源码分析等原创 2017-12-15 10:03:51 · 1110 阅读 · 0 评论 -
基于注解的Spring Security原理解析
概述:Spring Security就是引入了一系列的SecurityFilter,将其添加到Spring中去了;在有请求时,根据URL是否符合每个Filter的规则来判断是否需要该Filter来进行处理。原创 2017-12-07 11:05:15 · 18427 阅读 · 3 评论 -
Spring Security Filter详解
经过基于注解的Spring Security原理解析分析,Spring Security本身所做的事情就是在Spring容器中注册了一系列的Filter,这些Filters在检测到满足条件的URL请求时,会执行其定义的处理过程; Security本身默认提供了一些Filter来完成其各种功能; 本文主要分析以下问题:默认Filter的作用及配置默认Filter的配置及生效示例分析原创 2017-12-06 17:36:09 · 27815 阅读 · 1 评论 -
Spring Boot拦截器示例及源码原理分析
Spring Boot拦截器示例及源码原理分析原创 2017-12-18 15:23:32 · 8884 阅读 · 1 评论 -
Spring boot MVC配置详解
Spring Boot通过WebMvcAutoConfiguration来提供一些默认配置;大多数时候使用默认的配置即可满足要求。但有时可能需要做一些个性化定制,此时就需要使用以下方式来进行。1 使用EnableWebMvc注解此时会引入类WebMvcConfigurationSupport中的相关配置;而不会使用WebMvcAutoConfiguration中的配置。 EnableWe...原创 2018-03-07 21:35:57 · 15047 阅读 · 0 评论 -
Spring Boot基础-配置文件使用详解
使用Spring Boot进行应用开发时,配置项可以配置在配置文件中,Spring Boot通过一定的机制加载配置文件中的配置项,然后将设置到Bean中使用的地方去。 使用配置文件管理配置项有很多好处:使用配置文件时,修改配置项不需要重新编译,而修改Java文件中的值时需要重新编译后才能使用;也省去了打包等过程; 使用配置文件时,可以很方便的将不同环境(如生产环境、测试环境、开发环境)的...原创 2018-03-16 18:12:37 · 678 阅读 · 0 评论 -
Spring基础学习-任务执行(TaskExecutor及Async)
在做项目过程中,一些耗时长的任务可能需要在后台线程池中运行;典型的如发送邮件等,由于需要调用外部的接口来进行实际的发送操作,如果客户端在提交发送请求后一直等待服务器端发送成功后再返回,就会长时间的占用服务器的一个连接;当这类请求过多时,服务器连接数会不够用,新的连接请求可能无法得到满足,从而导致客户端连接失败。因此这类服务一般需要使用到后台线程池来处理。 在这种情况下,我们可以直接使用concu...原创 2018-03-12 16:22:42 · 30163 阅读 · 3 评论 -
Spring基础学习-任务调度TaskScheduler
某些时候我们可能需要在某些固定的时间或者是间隔一定的时间连续执行一些任务,如每天凌晨自动跑一些批次/心跳检测等。Spring通过使用TaskScheduler来完成这些功能。本文目录:1 Trigger1.1 CronTrigger1.2 PeriodicTrigger2 TaskScheduler接口简介2.1 接口简介2.2 TaskScheduler的实现类2.2...原创 2018-03-12 19:16:54 · 13191 阅读 · 0 评论 -
Spring基础学习-SpringMVC异步处理模式分析(DeferredResult/SseEmitter等)
本文目录1. 背景2. SpringMVC异步处理概述2.1 Callable2.2 DeferredResult2.2.1 DeferredResult处理流程2.2.2 DeferredResult使用示例2.3 SseEmitter2.4 StreamingResponseBody3 异步处理拦截器参考资料1. 背景Tomcat等应用服务器的连...原创 2018-03-13 13:14:11 · 11994 阅读 · 0 评论 -
4 Spring Cloud集群服务清单及搜索页面实现
在使用Spring Cloud的集群中,有时候想要看到集群中所提供的所有服务清单。但目前未找到较好的应用。Swagger能够提供每一个应用所提供的服务清单,但集群中所有的服务清单并没有集成起来。想要看哪个应用提供的服务清单需要到各个应用上去查看。而且它所提供的信息过多,很多时候都不需要使用到。因此,在基于Actuator及Swagger基础上,开发了一个集成显示所有清单的页面,并提供简单的搜索...原创 2018-05-25 09:26:50 · 1153 阅读 · 0 评论 -
基于Spring Cloud微服务集群的服务治理思考
就目前了解的情况来看,公司的服务提供方是较为混乱的。可能也是因为刚进公司对大多数服务都不是很了解的原因。至少目前来说还是一头雾水。个人觉得在以下方面可以加强:每一个服务提供方的功能范围需要明确,且能够从某种意义上与其它的服务提供方区分开来,形成文档来描述系统划分的原则与依据,协助使用者清晰的理解各个提供方的功能,简化调用。同时在后续的服务开发过程中严格按照这些原则来将新增加的服务划分到正...原创 2018-05-23 09:06:49 · 440 阅读 · 0 评论 -
Spring测试静态方法打桩-PowerMockito及SpringBootTest结合使用
Mockito无法对静态方法进行Mock,如果需要Mock静态方法,需要使用到PowerMockito。1. Maven依赖<dependency> <groupId>org.powermock</groupId> <artifactId>powermock-api-mockito</artifactId>...原创 2018-05-24 08:43:59 · 13023 阅读 · 0 评论 -
Redis操作无响应问题处理记录及总结
项目中某个功能使用了Redis做缓存,使用代码如下: Map<String, String> map = new HashMap<>(16); configItems.stream() .map(ProductionLineConfigItemDTO::getDeviceId) .filter(Objects::nonNull) ...原创 2019-09-18 12:48:09 · 2038 阅读 · 0 评论