SpringBoot2.1(2)常用配置、日志及集成Freemarker写页面

《回顾》

上篇文章说了SpringBoot的概念及详细的介绍了如何搭建一个SpringBoot基本项目

有人说,这一些并不是我想要的。我要用SpringBoot写项目,带页面的那种。

一步步来。

SpringBoot2.1(2)常用配置、日志及集成Freemarker写页面

 

本篇文章,将介绍SpingBoot常用的一些配置,和使用Freemarker搭建第一个页面。

SpringBoot,常用的配置文件分为两种

.properties

.yml

 

YAML,是SpringBoot引入的一种配置文件,支持树形结构,并且支持将一个文档切割成多份。之前未使用过的,有一定的学习成本,但是极低。

 

去年,我在写SpringBoot1.5.9文章的时候,强烈安利使用YAML,一文件,多环境方便自动化部署。但是经过这一年多在生产环境的实际应用和磨合情况来看,当时,是我冲动了。

SpringBoot2.1(2)常用配置、日志及集成Freemarker写页面

 

简单说明下情况:

我们这所有的项目,都是自动化部署,并且代码和配置文件分离的,一般配置文件都放置在服务器某固定位置。

缺点也就随之暴露:

1、SpringBoot加载项目外的yml不太稳定,不知道2.0以后有没有优化。

2、脱离IDE后,YAML文件结构变的不那么清晰,特别是配置项极多的时候,容易在结构上出问题

 

SpringBoot2.1(2)常用配置、日志及集成Freemarker写页面

 

 

基本配置

 

springboot2.1.1 这次,我安利properties

来看下SpingBoot2.1都有哪些常用的配置

#### 基本配置 #####
# 端口号默认8080
server.port=8080
# 文根,等同于tomcat/webapps下面的项目名称,默认/
server.servlet.context-path=/springbootz
# http编码,默认UTF-8
spring.http.encoding.charset=UTF-8

##### 日志 #####
# 日志等级
logging.level.root=info
# 日志路径(硬盘路径,Windows下使用C:\\xxx,D:\\xxx 等)
# logging.path=/opt/logs/springbootz/
# 日志文件名称
logging.file=/opt/logs/springbootz/spring.log

有一点需要注意,SpringBoot1.X中,文根配置和2.X略微不同,1.X中使用「server.context-path」配置文根。

 

集成Freemarker

问题来了,有Thymeleaf,有Freemarker,为啥选Freemarker?

以我的脾气,选择是不可能选择的,这辈子都不可能。

Thymeleaf,关注下一篇。 

 

引入Maven依赖,文件:“pom.xml”

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>

 

 

配置SpringBoot集成支持,文件:“application.properties”

#### freemarker配置 #####
# 开启freemarker支持
spring.freemarker.enabled=true
# 文件后缀名
spring.freemarker.suffix=.ftl
# 开启缓存
spring.freemarker.cache=true
# 编码
spring.freemarker.charset=UTF-8
# freemarker存放路径
spring.freemarker.template-loader-path=classpath:/templates/
spring.freemarker.expose-request-attributes=true
spring.freemarker.expose-session-attributes=true

 

动手写代码。

新建“IndexController.java”

新建“src/resources/templates/index.ftl”

结构如下:

 

SpringBoot2.1(2)常用配置、日志及集成Freemarker写页面

 

 

IndexController.java 内容:

@Controller
public class IndexController {
    private Logger log = LoggerFactory.getLogger(getClass()); // 日志

    @GetMapping("/index")
    public String index(){
        log.info("访问首页");
        return "index";
    }
}

index.ftl 内容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>SpringBoot演示</title>
</head>
<body>
    这是一个freemarker页面。
</body>
</html>

 

启动应用,访问首页,这里有细节:

 

SpringBoot2.1(2)常用配置、日志及集成Freemarker写页面

 

1、可以看到标题和内容,都已经是 index.ftl 内容

2、红线1,我们在application.properties中配置的“server.servlet.context-path”文根值

3、红线2,Controller路径。

上两者只要配置过,缺一不可。

 

扩展,如何从前端传递参数到后端,后端再带回前端并展示在页面?

 

IndexController.java 增加内容:

@GetMapping("/index/{name}")
public String index(ModelAndView modelAndView, @PathVariable String name){
    log.info("{}:访问首页",name);
    modelAndView.addObject("name",name);
    return "index";
}

index.ftl 增加内容

<p>欢迎你:<span style="color: red">${name!''}</span></p>

 

启动应用,访问:http://localhost:8080/springbootz/index/张三

SpringBoot2.1(2)常用配置、日志及集成Freemarker写页面

 

 

关于日志

  • 控制台日志打印

 

SpringBoot2.1(2)常用配置、日志及集成Freemarker写页面

两个颜色的框,对应两个不同的打印。

  • 日志文件

上面application.properties 中,我们配置了“/opt/logs/springbootz/”作为我们的日志路径。

可以到该文件夹下查看内容。

 

SpringBoot2.1(2)常用配置、日志及集成Freemarker写页面

 

Windows系统一样的道理,如果配置的是E:\\logs\springbootz直接进入对应的文件夹去找文件查看即可。

要介绍的三点,已经结束,细水长流,水滴石穿,多些耐心去学习,我相信你可以很优秀。

 

博客内所有文章,每周从公众号同步一次。

文章源码均可从公众号获取。

如果您可以关注下,那就好了。

SpringBoot2.1(2)常用配置、日志及集成Freemarker写页面