spring boot_001_搭建环境

Java 1.8,IDEA 2018.1
gradle

Spring Boot 2.2 增加了对Java 13的支持 对于老版本的Java 11、Java 8依然支持良好。所以,对于还在使用Java 8的用户也可以安心的升级使用。

http://start.spring.io

配置 VPN 代理

  • 配置 VPN
    我这里使用的是 shadowsocks。socks5 配置为 127.0.0.1:1086

  • 配置 IDEA
    Appearance & Behavior > System Settings > Http Proxy

    2083268e.png 使用下面的 check connection 输入网址 `www.google.com` 可以正常访问就可以了。

新建项目

File-New-Project-Spring Initializr 选择 Gradle 工程,JAR 包,JAVA 11
依赖选择 Web, thymeleaf,mongodb

如果之前装了 java 8, 需要修改一下配置,settings/build,execution,deployment/Gradle/ 修改 JVM 版本

创建基本目录结构:common,controller,model,repository,service
44a1b1fc.png

引入 bootstrap 4.3.1

<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">

<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>

静态资源的引用

using webjars

在 resources/templates 下面创建 index.html

https://www.webjars.org/

使用 webjars 引用公共静态资源

http://localhost:8080/webjars/jquery/3.4.1/jquery.js

using resources

默认的静态资源存放路径 resources/static

使用 thymeleaf

  1. 导入名称空间
<html lang="en" xmlns:th="http://www.thymeleaf.org">
  1. 使用 th:xxx 语法替换原生属性值

使用 font awsome 5

在 css 里面配置时,出现小方块,不显示图标问题,在 html 里面配置时,正常

```

## 添加日志

spring boot 默认是 info
可以在 application.properties 里面添加

```yaml
# com.example.demo 是项目包,日志可以指定包设置
logging.level.com.example.demo=trace
# 当前项目路径下生成
logging.file.name=demo.log
# / 表示当前磁盘根路径
#logging.file.path=/demo/log/demo.log
Logger logger = LoggerFactory.getLogger(getClass());

logger.trace("log trace");
logger.debug("log debug");
logger.info("log info");
logger.warn("log warn");
logger.error("log error");

增加配置类,扩展 mvc 配置

@Configuration
public class extMvcConfig implements WebMvcConfigurer {

@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/main").setViewName("dashboard");
}
}

使用拦截器检查登陆权限


public class extLoginInterceptor implements HandlerInterceptor {

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
Object user = request.getSession().getAttribute("loginUser");
if (user == null){
request.setAttribute("msg","没有权限,请登录.");
request.getRequestDispatcher("/index.html").forward(request,response);
return false;
}else {
return true;
}
}
}


@Configuration
public class extMvcConfig implements WebMvcConfigurer {

@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/dashboard.html").setViewName("dashboard");
registry.addViewController("/").setViewName("index");
registry.addViewController("/index.html").setViewName("index");
}

@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new extLoginInterceptor()).addPathPatterns("/**").excludePathPatterns("/index.html","/","/index","/static/**");
}
}

设置多个环境配置

# 默认使用 application.properties
可以创建 application-{profile}.properties
例如:
application-develop.properties

然后在 application.properties 里面配置
spring.profiles.active=develop
// 使用 yaml
有个文档块模式可以分开写不同的配置

使用 --- 区分配置块
---

激活配置文件

java -jar xxx.jar --spring.profiles.active=develop

集成 Swagger2

添加插件, 在这里获取 https://mvnrepository.com/

// https://mvnrepository.com/artifact/io.springfox/springfox-swagger2
compile group: 'io.springfox', name: 'springfox-swagger2', version: '2.9.2'
// https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui
compile group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.9.2'

运行后访问如下地址
http://localhost:8080/swagger-ui.html

user Model

创建 java class modelUser
model-modelUser

@ApiModel(value="User 对象",description="User 对象类的相关描述")
public class modelUser {

@ApiModelProperty(value="user name",name="name",example="小明",required=true)
public String name;
@ApiModelProperty(value="user password",name="password",example="123456",required=true)
public String password;
@ApiModelProperty(value="user email",name="email",example="xm@126.com")
public String email;
@ApiModelProperty(value="user cellphone",name="phone",example="13812811234")
public String phone;
@ApiModelProperty(value="user register date",name="registerDate",example="2018-01-02 08:08:08")
public String registerDate;
@ApiModelProperty(value="user last login date",name="lastLoginDate",example="2018-01-03 08:08:18")
public String lastLoginDate;
@ApiModelProperty(value="user flag, -1 delete,0 not use, 1 active, ",name="flag",example="00",allowableValues = "-1,0,1")
public int flag;
...
}

modelResult 作为返回对象

@ApiModel(value = "Result 对象", description = "Result 对象类的相关描述")
public class modelResult {
@ApiModelProperty(value = "Result code", name = "code", example = "0", required = true)
public Integer code;
@ApiModelProperty(value = "Result message", name = "msg", example = "success", required = true)
public String msg;
@ApiModelProperty(value = "Result timestamp", name = "timestamp", example = "2018-01-01 12:21:12.111", required = true)
public String timestamp;
@ApiModelProperty(value = "Specific data Optional,should be json format", name = "data", example = "null")
public Object datas;
...
}

实现了简单的 CRUD 操作

发布项目

IDEA 右边的 Gradle-build-bootJar 双击即可,然后部署上去 java -jar xx.jar 就可以启动了
如果右边没有发现 Gradle 选项,那么关闭 idea 再重新打开就应该有了。
c298783b.png