DanZ's Blog

a normal developer daily blog

0%

springboot 日志使用(LogBack

一. 简述

web 开发中,大大小小的 bug 是难以避免的。这时候,记录起来的日志就可以用来解决问题或者回滚。当然日志也可以用来查询用户操作的东西,以便甩锅(刚刚说完我就接到了一个产品被认为设置成 330 元的日志查询任务,他应该是 30 元以内的)。
Github地址:https://github.com/WeidanLi/spring-boot-tutorial 项目演示:globle-log-logback

阅读全文 »

springboot 的多配置环境配置

一. 简述

多环境配置,这个东西无论在大厂小厂都是需要的,因为往往我们开发环境、测试环境、生产环境都不一样。数据库连接不说别的,起码 url 是不一样的。当然做法也有很多,可以通过 properties ,也可以通过 mvn 的配置以及 springprofile 方式。 Github地址:https://github.com/WeidanLi/spring-boot-tutorial 演示项目:globle-profiles

二. 开发

1. mvn 依赖

1
2
3
4
5
6
7
8
9
<dependencies>

<!-- 引入 web-starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

</dependencies>

感觉这个 web-starter 就是万能的依赖,有了它什么东西都有了。

阅读全文 »

springboot 与 security 保护 web 安全

一. 简述

web 项目,权限的事情就常常伴随着左右,比如某个用户有没有资格访问这个资源,常用的权限框架一般有 shriospring-security 。一般来说,很多公司会选择前者,因为会稍微轻量级(其实我为了写这篇文章稍微学习一下 spring-security 也有这种感觉,spring 公司把用户权限等等都已经提供了接口,不利于我们自己定制化,有好有坏吧,熟悉的话快速开发是个不错的选择)。当然现在我有种比较喜欢 spring 的全家桶的感觉,毕竟开发起来很面向对象。而且自家的产品,跟自己搭配起来,都会很简单的就起来了。
OK,简单的搭建没什么意义,所以这里我提前用了下 jpa ,简单的示例。 业务情景是这样子的:我数据库里面有一堆资源,但是有规定,不同角色只能请求不同的资源,当你的角色不匹配,请求的时候会被拒绝。用户和角色我就没分出来表了,放在同一张表,目的是快速的进行演示。 示例代码:web-security

阅读全文 »

springboot 与接口文档系统 swagger

一. 简述

日常开发中,常常需要接口文档的交互,跟前端也好,跟 app 端的也好。但是如果是手动编写的文档,常常会因为各种原因(当然,懒和忘记是主要原因),会比代码滞后。这样导致的问题就比较严重了,有时候前端写完一个功能了,对接一下,哎呀,出错了。不仅增加了麻烦,还浪费了时间。 当初选择使用 swagger 是因为其界面还不错,清新清新的感觉。现在官网出了很多产品,但还都是需要去利用手动的去更新文档。我最喜欢的还是这种你编码一个接口顺便把文档使用注解的方式给写在了文档上面。可以有效的避免了接口更新但是忘记更新文档的尴尬。

二. 开发

1. mvn 引入所需要的依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<properties>
<springfox-version>2.5.0</springfox-version>
<swagger-core-version>1.5.10</swagger-core-version>
</properties>

<dependencies>

<!-- 引入 web-starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<!-- 引入 swagger 相关的依赖 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${springfox-version}</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-core</artifactId>
<version>${swagger-core-version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${springfox-version}</version>
</dependency>


</dependencies>

2. 编写启动器

1
2
3
4
5
6
7
8
9
@SpringBootApplication
@EnableSwagger2 // 启动 swagger 自动配置
public class Swagger2Application {

public static void main(String[] args) {
SpringApplication.run(Swagger2Application.class, args);
}

}
阅读全文 »

springboot 与 freemark 模板

一. 简述

Freemarker 是一个热门的 MVC 模板引擎,拥有跟 jsp 一样的一些指令标签,广受大众的热爱。 我没真正使用过 Freemarker ,在即将投入使用的项目中,因为一个偶然的想法(动静分离)而彻底放弃了 MVC 思想,改用了前端的 MVVM 框架,配合 JSON 数据格式。

二. 开发

1. MVN 的依赖

1
2
3
4
5
6
7
8
9
10
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
</dependencies>

其实我感觉这是我写过的最简单的 Spring-Boot 教程了,全程不需要任何的自定义配置,只要引入依赖的包即可投入使用。

阅读全文 »

springboot 与数据验证

一. 简述

在项目开发中,验证参数也是最经常使用的业务需求了。通常在开发的时候都需要根据业务需求,对参数进行必要验证。 当然一堆的 if-else 的验证在日常开发中时常可见。这种方式非常不友好: 1. 代码太长导致阅读不友好,更改需求可能只是简单的修改但是却需要阅读几十到几百行的代码 2. 有时候业务只是一两句但是验证代码却占用了很长时间 JSR-303Java 的验证规范,早期是在 Hibernate 框架中实现的,后面被抽取到 Java 体系。Spring-Boot 使用了 hibernate-validator 验证器,所以也包含了 JSR-303 在里面。当需要进行参数验证的时候,只需要几个注解即可实现复杂的验证。
GitHub:https://github.com/WeidanLi/spring-boot-tutorial 项目示例:web-validate

二. 开发

1. 引入依赖

1
2
3
4
5
<!-- 引入 web-starter, 已经包含 hibernate-validator 验证器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
阅读全文 »

springboot 与数据接口

一. 简述

从以往的 Spring 项目开发经验来看,SpringJSON 情有独钟,这也得益于 JSONJS 发明的一种轻量级的数据交换格式,因为本身 JS 是弱类型的语言,所以 JSON 便没有什么特定类型限制,使得其他各门语言都可以对 JSON 进行解析,从而序列化成各自的对象。 其实前面说的已经有一点半点的,基本都是返回 JSON 字符串,所以这里便加深一点,涉及 SpringMVC 可以用于开发的注解。
GitHub:https://github.com/WeidanLi/spring-boot-tutorial 项目示例:web-restful

二. 开发

1. maven 依赖

maven 依赖依然只需要 spring-boot-starter-web 的依赖即可

1
2
3
4
5
6
7
<dependencies>
<!-- 引入 web-starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
阅读全文 »

springboot-web 拦截器的使用

一. 简述

用过 SpringMVC 的应该都知道拦截器,拦截器可以设置在 SpringMVC 接收请求之前处理(返回 true 继续执行或 false 拒绝执行),方法处理请求之后,以及处理完整个请求之后的操作。例如:单体项目的登陆拦截、在进入处理器之前先给线程栈设置一个公用的 UserThreadLocal 等等。
GitHub地址:https://github.com/WeidanLi/spring-boot-tutorial 项目示例:web-interceptor

二. 开发

1. mvn 新增 web-starter 的依赖

1
2
3
4
5
6
7
<dependencies>
<!-- 引入 web-starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>

拦截器依然默认是存在 web-starter 里面的。

阅读全文 »

springboot-web 常用异常信息返回

一. 简述

在日常的开发中,都会有多多少少的异常发生,如:不存在异常、参数异常等等。那这时候怎么向前端展示也是一个问题,通常的做法就是建立一个通用的数据返回类注入 ResultDto 然后存储是否顺利调用,数据,错误信息等信息。结合 spring-boot-web 的监听器,可以让我们尽量少的关注这些错误异常的发生,只要一句话或者一个注解【需要自己封装,使用 aop 】,就可以实现程序给我们的自动验证。 GitHub: https://github.com/WeidanLi/spring-boot-tutorial 示例代码:web-exception-resp

二. 开发

1. mvn 新增 web-starter 的依赖

1
2
3
4
5
6
7
<dependencies>
<!-- 引入 web-starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
阅读全文 »

一个简单的入门 web 项目

[toc]

一. 简述

其实,spring 在我们职业生涯中,大部分只做一件事情,那就是:web 项目 bean 的管理和整合。所以,web 应用是至关重要的,本文将从一个简单的 hello world 开始 web 的构建。 示例代码:web-simple

阅读全文 »