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文件夹下。
如下图所示:
资源路径只需要从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);
}
}
暂时想到这么多,有再增加。