spring boot的一些配置应用

时间:2022-04-06 09:20:27

1、使用前端模板thymeleaf,会要求使用严格的html标签

严格的html标签会很麻烦,会大大降低前端开发效率,下面的步骤可以去除严格的html标签限制。

配置文件application.xml中增加:

spring.thymeleaf.mode=LEGACYHTML5

pom文件中增加:

<dependency>
<groupId>net.sourceforge.nekohtml</groupId>
<artifactId>nekohtml</artifactId>
<version>1.9.22</version>
</dependency>

2、页面热加载

调整了页面不想重新编译后才能查看效果
配置文件application.xml中增加:

spring.thymeleaf.cache = false

来禁用页面缓存

3、热部署

项目在启动状态,如果每次修改代码有,要重启项目会耗费不少时间。使用spring boot 的热部署功能可以减少每次重启项目耗费的时间。
pom文件中增加:

<dependency>  
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>

每次修改代码后只需要重新编译一下,项目就会重启,而这种重启会非常快,因为他只重新加载了本工程的class文件,外部文件不再重新加载。

4、配置日志功能

resource文件夹下新建logback-spring.xml,文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->
<property name="LOG_PATH" value="d:\\logs" />
<!-- 彩色日志格式 -->
<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}" />
<!-- 控制台输出 -->
<appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%d - %msg%n</pattern>
</layout>
</appender>
<!-- 按照每天生成日志文件 -->
<appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>DENY</onMatch>
<onMismatch>ACCEPT</onMismatch>
</filter>
<encoder>
<pattern>%msg%n</pattern>
</encoder>
<!--滚动策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--路径-->
<fileNamePattern>${LOG_PATH}/analysis/info.%d.log</fileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>45</MaxHistory>
</rollingPolicy>
</appender>
<appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<encoder>
<pattern>%msg%n</pattern>
</encoder>
<!--滚动策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--路径-->
<fileNamePattern>${LOG_PATH}/analysis/error.%d.log</fileNamePattern>
<!--日志文件保留天数-->
<MaxHistory>45</MaxHistory>
</rollingPolicy>
</appender>
<root level="info">
<appender-ref ref="consoleLog" />
<appender-ref ref="fileInfoLog" />
<appender-ref ref="fileErrorLog" />
</root>
</configuration>

spring boot 项目中已经集成了slf4j日志组件,所以可以直接调用。
调用方法:

//实例化
Logger logger = LoggerFactory.getLogger(类名<T>.class);
//记录日志
logger.info("test");
logger.error("test");
logger.debug("test");

5、静态资源路径

如果使用thymeleaf前端模板,所有的静态资源都存放在static文件夹下。

如下图所示:
spring boot的一些配置应用

资源路径只需要从static下开始写:

/img/404.jpg

程序默认会从static文件夹下开始找。

6、项目名称及端口号配置

配置文件application.xml下增加:

server.context-path=/demo
server.error.path=/error
server.port=8787
server.session-timeout=30

如果不配置server.context-path,那么访问根路径就是ip+端口号
配置了server.context-path,静态资源访问路径也需要加上该前缀,即:

/demo/img/404.jpg

server.error.path=/error即配置出错访问页面。可以自己定义一个error.html页面放在template文件夹下。
不自己定义就会使用默认的页面。
server.port=8787定义端口号为8787
server.session-timeout=30定义session超时时间为30分钟

7、war包部署到tomcat中

spring boot 集成tomcat,默认是jar包。直接命令行可以运行。不需要再去配置tomcat环境。不过需要java 8版本支持。
如果需要war包部署到tomcat中,需要对pom文件进行更改:

<groupId>com.demo</groupId>
<artifactId>demo</artifactId>
<version>1.0</version>
<packaging>war</packaging>

<!--war包使用-->
<!--<dependency>-->
<!--<groupId>javax.servlet</groupId>-->
<!--<artifactId>javax.servlet-api</artifactId>-->
<!--<version>3.1.0</version>-->
<!--<scope>provided</scope>-->
<!--</dependency>-->
<!--war包使用-->
<!--war包使用-->
<!--<dependency>-->
<!--<groupId>org.springframework.boot</groupId>-->
<!--<artifactId>spring-boot-starter-tomcat</artifactId>-->
<!--<scope>provided</scope>-->
<!--</dependency>-->
<!--war包使用-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!--war包使用-->
<!--<exclusions>-->
<!--<exclusion>-->
<!--<groupId>org.springframework.boot</groupId>-->
<!--<artifactId>spring-boot-starter-tomcat</artifactId>-->
<!--</exclusion>-->
<!--</exclusions>-->
<!--war包使用-->
</dependency>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<jvmArguments>-Dfile.encoding=UTF-8</jvmArguments>
</configuration>
</plugin>
<!--war包使用-->
<!--<plugin>-->
<!--<groupId>org.apache.maven.plugins</groupId>-->
<!--<artifactId>maven-war-plugin</artifactId>-->
<!--<configuration>-->
<!--<warName>demo</warName>-->
<!--</configuration>-->
<!--</plugin>-->
</plugins>
</build>

启动类做修改:

public class DemoApplication extends SpringBootServletInitializer{

public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(DemoApplication.class);
}

}

暂时想到这么多,有再增加。