了解如何使用Spring Boot和AspectJ实现方法跟踪基础结构!最近在优锐课学习收获颇多,记录下来大家一起进步! 在我们的应用程序中,获取方法的堆栈跟踪信息可能会节省很多时间.具有输入输出参数值和方法所花费的时间可以使查找问题变得更加容易.在本文中,我们将研究如何使用Spring Boot,AspectJ和Threadlocal为方法跟踪基础结构实现起点. 在此示例中,我使用了: Spring Boot Starter Web 2.1.7 Java 1.8 + AspectJ 1.8 M…
Spring Boot提供了两种 “开机自启动” 的方式,ApplicationRunner和CommandLineRunner 这两种方式的目的是为了满足,在容器启动时like执行某些方法.我们可以通过实现ApplicationRunner或者CommandLineRunner来实现,他们都是在SpringAppliaction执行之后开始执行的.这个特性可以让我们自定义一些在容器启动时需要初始化的逻辑 ApplicationRunner接口: 官方doc: Interface used to…
原文:https://www.jianshu.com/p/9bfe103418e2 注意 Spring Boot 2.0之后,使用EnableZipkinServer创建自定义的zipkin服务器已经被废弃,将无法启动 具体可看issue Deprecates EnableZipkinServer to explain custom servers are unsupported 开始 搭建zipkin服务器 获取最新发布的zipkin服务器,一个可执行的jar curl -sSL https:…
背景 随着spring boot 的流行.越来越多的来发着选择使用spring boot 来发 web 应用. 不同于传统的 web 应用 需要 war 包来发布应用. spring boot 应用可以把整个项目打包成一个可执行的 jar .同时也导致 jar 越来越庞大. 对于现在高速迭代项目.上传如此庞大的 jar 对来发人员来说是一件极其痛苦的事情. 本章介绍如何将项目中变化的不大的 jar 提取到外部. 具体步骤: 1: 通常我们是用spring-boot-maven-plugin 进行…
前言: 最近的时候遇到一个需求,就是当服务器接到请求并不需要任务执行完成才返回结果,可以立即返回结果,让任务异步的去执行.开始考虑是直接启一个新的线程去执行任务或者把任务提交到一个线程池去执行,这两种方法都是可以的.但是Spring 这么强大,肯定有什么更简单的方法,就 google 了一下,还真有呢.就是使用 @EnableAsync 和 @Async 这两个注解就 ok 了. 给方法加上 @Async 注解 package me.deweixu.aysncdemo.service;publi…
先说背景:公司采用diamond+tddl,这套技术来做web管理.本人处于好奇率先体验了下spring-boot,于是就有了spring-boot+tddl的组合.但是jar包上线后,屡屡发现一条error日志不痛不痒的出现在日志文件中,处于程序员的本能,怎么能允许error日志出现在我的系统中呢! 于是,展开了一段tddl与spring-boot的爱恨之旅... 挣扎期 首先看错误提示: 2017-09-27 11:15:58,428 [main] ERROR com.taobao.tddl…
@Componentpublic class InitProject implements ApplicationRunner { private static final Logger logger = LoggerFactory.getLogger(InitProject.class); @Override public void run(ApplicationArguments args){ //初始化数据  执行方法 }}…
一.全局异常 1.首先创建异常处理包和类 2.使用@ControllerAdvice注解,全局捕获异常类,只要作用在@RequestMapping上,所有的异常都会被捕获 package com.example.demo.exception; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler…
方法1: 1 StringBuffer sb = new StringBuffer(300); 2 sb.append("SELECT v.id, v.container_number, v.error_feedback,v.is_handled,v.job_type,v.remark,v.vessel_voyage_number,"); 3 sb.append("e.error_code,e.error_description"); 4 sb.append(&qu…
@RequestMapping(value = "/redirect", method = RequestMethod.GET) public void redirecttest(@RequestParam(value = "account",required=false) String account, @RequestParam(value = "pwd",required=false) String pwd, HttpServletRequ…