springboot 注解实现日志切面
项目中很多时候需要去打印方法入参和出参的日志,有助于排查错误。注解需要操作简单。常用的方式之一就是使用切面来切日志。
步骤:
定义自定义注解
编写自定义注解的切面方法
使用注解在需要输出日志的方法上
1.自定义注解1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253/** * * controller 注解切面 * @author liukai * @data 2018/8/7 15:26. */@Target({ElementType.PARAMETER, ElementType.METHOD})//目标是方法@Retention(RetentionPolicy.RUNTIME)//注解会在class中存在,运行时可通过反射获取@Documented//文档生成时,该注解将被包含在javadoc中,可去掉@Inheritedpublic @interface ControllerLog { /** ...
Lambda01-Functional 函数式接口
Functional 为 lambda 方法提供一个接口
函数式接口Functional 的定义其实很简单:任何接口,如果只包含 唯一一个抽象方法,那么它就是一个 Functional Interface ,函数式接口?这注解名字好。为了让编译器帮助我们确保一个接口满足 Functional Interface 的要求(也就是说有且仅有一个抽象方法),Java8提供了@FunctionalInterface注解。
先学习函数式接,才能理解学习 Lambda 表达式。
有什么用白话:用来为函数式编程提供接口。就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。函数式接口可以被隐式转换为 lambda 表达式。
简单示例写一个最简单的例子做为入门参考,看不懂不要紧,这个只是一个例子。
声明一个无参的接口声明一个无参函数式接口,为 lambda 提供一个接口。在接口上添加@Functional那么这个接口就是一个函数式接口
1234@FunctionalInterfacepublic interfaceMyFunctional { public abstract ...
使用freemarker页面静态化
公司使用 vue + ngixn 前后端分离架构,重构一套新的静态化的门户网站。后台管理系统为动态页面。使用 freemarker 进行页面静态化的处理,生成静态化页在。前后分离的页面,静态图片需要使用 nginx 进行路径转换。UEditor 上传到本地的图片,没有使用文件管理系统,直接存放到服务器本地,需要 nginx 进行路径转换。
使用原理:1.freemarker 将数据填充入 ftl 模板中,再由 freemarker 生成静态页面2.vue 获取静态页面进行数据展示
1.工具类
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960import freemarker.template.Configuration;import freemarker.template.Template;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import ...
什么是上下文context
上下文(背景/语境) context是当前运行程序的环境。网上各种不可说,模糊不清,但是一个概念的提出肯定有最初的含义。
总结上下文可以理解成:
上下文指由代码已运行的程序环境,不是指代码。
一组状态,这个好理解,取 spring cloud 的官方文档的例子:
一个Spring Cloud应用程序通过创建一个"引导"上下文来进行操作,这个上下文是主应用程序的父上下文。引导上下文使用与主应用程序上下文不同的外部配置约定,因此使用bootstrap.yml application.yml(或.properties)代替引导和主上下文的外部配置。这里所谓的 引导上下文 就是一组状态,实际就是一个保存配置的大对象,换个角度理就是环境。
环境背景每一段程序都有很多外部变量。只有像Add这种简单的函数才是没有外部变量的。一旦你的一段程序有了外部变量,这段程序就不完整,不能独立运行。你为了使他们运行,就要给所有的外部变量一个一个写一些值进去。这些值的集合就叫上下文。
摘自知乎
和其他传入对象参数没什么区别。但是通常使用Context来描述有几个特点:被传入Context的 ...
spring boot 使用maven打jar包配置
使用 ide 进行开发时,直接在ide上启动即可,如果要放到服务器上进行使用,就必须打成jar包,这里使用 maven 的打包插件进行打包。注意 <mainClass>com.devops.WebApplication</mainClass> 这行要改成你的启动类。
1234567891011121314151617181920212223242526272829303132<build> <finalName>devops-web</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> ...
spring boot 添加默认根路径跳转
同一组数据分组需求:一个 list 里可能会有出现一个用户多条数据的情况。要把多条用户数据合并成一条。
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 public static void main(String[] args) { List<User> users = Arrays.asList( new User(1, "liu big big", "123456789"), new User(2, "liu big big", "987654321"), new User(3, "su xiao xiao", "55555555& ...
springboot打war包
spring boot 在内置了 tomcat,但是会使用到外置 tomcat 的情况。在使用外置 tomcat 时需要让 spring boot 的打包方式打成 war 包。
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273<build> <finalName>fund</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> < ...
spring boot 中使用 hibernate validate 校验
spring boot 中使用 Hibernate validate 进行入参字段校验,一般用于web 接口入参校验,用起来非常方便。
spring boot 的配置123456789101112131415161718192021222324252627282930313233343536373839404142import org.hibernate.validator.HibernateValidator;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.validation.beanvalidation.MethodValidationPostProcessor;import javax.validation.Validation;import javax.validation.Validator;import javax.validation.Valid ...
idea 自定义注释
日常开发当中,开发规范要求每个开发人员做到要必要的代码上加上注释。借助IDE可以快速的生成这些注释。
1.文件头部注释次创建新文件时会自动添加到文件头Perferences---Editor--->File and Code Templates--->Includes即是,不过这里设值类似Eclipse用 ${ }
12345/** * * @author ${USER} * @since ${DATE}. */
看效果
2.方法注释
创建 Template Group
创建 Live Template
创建 Template Groupidea 做的相当不错的,可以根据自定义注释名称来生成自己设定的注释Perferences---Editor--->Live Templates点 + 创建 Template Group 输入自己的 Template
创建 Live Template再点 + 创建 Live Temp 剩下的不用看也明白了,这里做一个模板:Abb reviation 是自定义快捷语,在代码中输入自定义名称 ...
idea 设置编译版本无效问题解决
idea 编译总是1.5处理使用 idea 时会碰到在 Project Structure 中设置了编译版本为 1.8 时,重新编译过后查看,还是1.5的问题,怎么都改不过来。这是因为 maven 的 compiler 工具的问题,两种解决方式。
1.指定 comipler 的编译版本
12345678910111213<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> < ...