
SpringBoot
ye17186
着重于后端,略知些前端,双管齐下才是真
展开
-
SpringBoot 异步线程间传递上下文
SpringBoot异步线程间传递上下文需求实现启用异步功能配置异步配置任务装饰器完工需求SpringBoot项目中,经常使用@Async来开启一个子线程来完成异步操作。主线程中的用户信息需要传递给子线程实现启用异步功能在启动类里加上@EnableAsync注解@EnableAsync@SpringBootApplicationpublic class Application {}配置异步新建一个配置类,实现AsyncConfigurer接口,并重写getAsyncExecutor方法原创 2020-12-11 09:59:04 · 4852 阅读 · 0 评论 -
spring boot集成发送邮件
本例中将发送邮件封装成了工具类,在业务代码中可以随时随地的调用,十分方便一、pom中加入mail的依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId><...原创 2019-03-04 17:45:30 · 692 阅读 · 0 评论 -
基于Jackson的JSON工具类封装 JsonUtils
直接上代码,都有注释,一看就懂,完全满足日常开发需求import com.fasterxml.jackson.annotation.JsonInclude.Include;import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jackson.core.type.TypeReferenc...原创 2019-03-20 16:38:39 · 5072 阅读 · 0 评论 -
springboot基于过滤器实现接口请求耗时统计
Spring Boot中实现一个过滤器相当简单,实现javax.servlet.Filter接口即可。下面以实现一个记录接口访问日志及请求耗时的过滤器为例:1、定义ApiAccessFilter类,并实现Filter接口@Slf4j@WebFilter(filterName = "ApiAccessFilter", urlPatterns = "/*")public class ...原创 2019-03-26 14:42:28 · 8762 阅读 · 0 评论 -
springboot基于拦截器实现登录权限拦截
一、需求系统中,除登录接口/login以外,其他所有接口,必须用户登录后才能访问。二、实现创建一个拦截器,拦截除/login以外的所有请求,校验用户是否已登录,如果已登录,则放行,否则拦截请求,给出未登录信息提示。创建LoginInterceptor类,实现HandlerInterceptor接口,重写preHandle方法package com.yclouds.servic...原创 2019-03-26 15:21:29 · 4320 阅读 · 0 评论 -
springboot基于AOP实现操作日志记录
一、需求在开发系统时,尤其是后台管理系统,几乎每一个操作,都要求记录其操作日志。二、实现如果在每一个操作结束之后,都加上一个记录日志的操作,那样代码会非常臃肿,耦合度高、代码可读性差,维护难。本例中,采用AOP来实现日志记录功能,一个注解即可实现同样的效果。1、新建一个注解SysLogPoint,用于标识需要记录日志的切面package com.yclouds.common....原创 2019-03-27 12:12:29 · 4889 阅读 · 3 评论 -
springboot日志框架log4j2配置
pom.xmlSpring Boot 默认的日志框架是logback,改用log4j2的话,需要改写pom,web项目中需要排除spring-boot-starter-logging,再自行添加spring-boot-starter-log4j2依赖。<dependency> <groupId>org.springframework.boot</grou...原创 2019-03-27 13:57:21 · 772 阅读 · 0 评论 -
SpringBoot全局配置日期类型参数Date自动绑定,返回结果自动格式化
网上的说法有很多,但都不太全面,本文是通过自己实践后,总结出来的处理方式。自定绑定和自动格式化是两种不同的处理,所以需要针对这两个进行配置,以springboot自带的jackson为例一、接收参数自动绑定1、配置一个String转Date的转化器public class StringToDateConverter implements Converter<String, Da...原创 2019-05-31 12:19:49 · 6717 阅读 · 0 评论 -
SpringBoot跨域问题CORS解决
前后端分离的项目中,接口和页面往往部署中不同的服务中,这个时候就是出现跨域的问题。如果是SpringBoot项目,可以采用下面两种方式来解决跨域问题。一、全局配置(推荐)@Configurationpublic class CorsMappingConfig implements WebMvcConfigurer { @Override public void add...原创 2019-06-28 12:12:52 · 1630 阅读 · 0 评论 -
validation自定义注解校验枚举类型
一、定义一个校验注解,类似于@NotNull @Size等等那样/** * 枚举校验注解 * * @author ye17186 * @version 2019/3/6 15:53 */@Target({ElementType.FIELD, ElementType.METHOD, ElementType.ANNOTATION_TYPE})@Retention(Retention...原创 2019-03-06 17:03:28 · 7435 阅读 · 0 评论 -
spring boot获取上下文 随时取出被spring管理的bean对象
方法一:实现ApplicationContextAware,重写setApplicationContext方法。这个方式下,工具类也被注册成了Bean,既然这样,那就必须确保该类能被Spring自动扫描到。@Componentpublic class SpringContextUtils implements ApplicationContextAware { private...原创 2019-02-26 14:51:10 · 7906 阅读 · 0 评论 -
@RequestMapping简化写法之@GetMapping和@PostMapping等注解
@RequestMapping在spring早期版本中一直存在,我也一直在使用。不过在Spring 4.3中,引入了@GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping,用来帮助简化常用的Http方法映射,并更好地表达了被注解方法的语义。以@GetMapping为例,从其源码中可以看出,它其实是一个组合注解,是@Re...原创 2019-02-28 14:18:47 · 1294 阅读 · 0 评论 -
Spring Boot 异步调用@Async
JAVA中可以自己创建线程等多种方式来实现异步调用,在spring3.0中,引入了@Async注解,让开发者能够更方便的实现异步效果。下面来看看再SpringBoot中如何正确的使用异步调用。一、启动类中,使用@EnableAsync注解开始异步功能@SpringBootApplication@EnableAsyncpublic class YCloudsServiceDemoApp...原创 2019-03-01 11:13:31 · 463 阅读 · 0 评论 -
spring boot 自定义@EnableXXX功能
在springboot中,我们开启一项功能是,常常用到@Enable***注解,例如@EnableAsync、@EnableCaching等等。下面我们来自己实现一个该功能。一、定义一个我们需要装配的功能/** * @author ye17186 * @version 2019/3/1 11:31 */public class MyConfiguration { @Be...原创 2019-03-01 11:46:09 · 2363 阅读 · 0 评论 -
关于@schedule任务前,下次是否启动实测
首先给出结论:上次未结束,下次任务不会启动。它会自动顺延到任务结束后的,下一个周期触发。测试:1、开始定时任务@Scheduled(cron = "0/3 * * * * ? ")public void run() { int sleep = new Random().nextInt(10); log.info("say sleep: {}s", sleep);...原创 2019-03-01 14:36:49 · 2210 阅读 · 0 评论 -
spring boot 多线程并发执行定时任务
Spring Boot默认情况下,所有定时任务会在一个线程中去执行,下面看测试代码,定义了三个测试Job:@Component@Slf4jpublic class TestJob { @Scheduled(cron = "0/3 * * * * ? ") public void job1() { log.info("do job1 start"); ...原创 2019-03-01 15:26:18 · 6367 阅读 · 7 评论 -
自定义@RestController用以简化与@RequestMapping的联合使用场景
在实际开发中,我们经常使用@RestController/@Controller+@RequestMapping来标注一个Controller@RestController@RequestMapping("/test")public class TestController { ...}在这里,每次都需要开发者写两个注解,比较麻烦。下面就对它进行自定义封装,以后只需要写一个...原创 2019-03-05 10:34:51 · 1873 阅读 · 1 评论 -
spring boot 统一JSON格式的接口返回结果
前后端分离的项目开发前,会提前规定好数据返回格式,本文以JSON为例。第一步,定义好JavaBean。package com.yclouds.myhelper.web.response;import com.fasterxml.jackson.annotation.JsonIgnore;import com.yclouds.myhelper.web.error.code.BaseE...原创 2019-02-26 13:48:45 · 9401 阅读 · 5 评论 -
spring boot统一异常处理
项目开发过程中,会遇到两种类型的异常情况,这里分开来讨论。一、请求正确被分发了,但是处理请求过程中,出现异常。这种情况,我们可以自定义一个Controller增强类,并加上@ControllerAdvice,要确保该注解能被Spring自动扫描到。@Slf4j@ControllerAdvicepublic class BaseController { /** ...原创 2019-02-26 14:21:28 · 470 阅读 · 0 评论 -
spring boot 主要注解
SpringBoot中注解有很多,最最核心的无疑就是@Configuration@ComponentScan@EnableAutoConfiguration这三个了1、@Configurationorg.springframework.context.annotation.Configuration这个注解是Spring 3.0添加的,用以代替applicationConte...原创 2019-02-27 18:20:04 · 628 阅读 · 0 评论