如题,本篇我们介绍下springboot项目中的另外一些常见的配置。如日志配置(log4j)、视图配置(jsp)以及静态资源配置等。
一、关于springboot中的LOG4J日志支持
SpringBoot默认是采用logback进行日志处理,Logback是由log4j创始人设计的又一个开源日志组件。然而,我们还是喜欢用log4j,因为我们大多数人的大多数项目都是使用log4j,而且配置起来也相当简单。那么如何在spring 项目中使用log4j来处理日志(而不是默认的logback)呢?
修改pom.xml ,排除spring-boot中 默认的logging支持,引入log4j的starter支持即可。
<!-- spring-boot web支持 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 排除spring-boot中 默认的logging支持 -->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- spring-boot log4j支持 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
<version>1.3.8.RELEASE</version>
</dependency>
log4j.properties 文件
log4j.rootLogger=info,stdout,D
#控制台日志 debug 级别
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.Threshold = debug
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
#文件日志 debug级别
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = e:/log/springWeb/springWeb.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = debug
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
二、关于springboot中JSP视图的支持
springboot中支持众多的视图,如FreeMarker 、Groovy、Thymeleaf、Mastache 以及JSP。如果需要配置jsp视图的支持,需要在pom.xml中配置内嵌tomcat、jsp、jstl的支持。
pom.xml
<!-- tomcat支持 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
<!-- jstl标签库 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
application.properties 配置jsp视图
#jsp 视图
spring.mvc.view.prefix=/WEB-INF/pages
#spring.mvc.view.suffix=.jsp
注:笔者喜欢让开发者保留JSP页面的.jsp的后缀,也建议众多开发者们保留.jsp的后缀,我的理由如下
1 一方面,这样可以让开发者清楚地知道这里是返回一个jsp页面,而不是freemarker 、velocity 、thymeleaf等模板页面 ,因为一个项目中很可能会同时存在多种视图技术,没有了.jsp后缀可能会让人产生迷惑,因为不清楚到底返回的是哪种视图页面。
2 另一方面,返回了一个没有后缀的路径,也有可能代表服务器转发到另一个controller路径,这也非常容易给人造成疑惑。(笔者在项目中就曾遇到过这样的问题,一些初学者对于return一个路径到底是转发jsp,还是转发或重定向到controller路径经常感到迷惑甚至弄错,如此种种纠纷的诞生就是因为页面路径没有带.jsp的后缀 ,之后带上了.jsp 后,于是纷扰的世界终于清静了!!!)
3 无论怎样,只要看到项目代码中出现了return xxx.jsp ,几乎100%能够肯定是返回到了一个jsp页面了, 这样也方面于在项目代码中ctrl+h 快速搜索 ,而如果你搜索的是xxx路径(不带.jsp后缀),你很可能会搜索到大量你不想看到的结果,浪费我们大量的工作时间。
三、关于springboot中静态资源的配置
默认配置application.properties 如下:
#静态资源访问路径 (默认规则)
spring.mvc.static-path-pattern: /**
spring.mvc.resources.static-locations:/,classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/
spring.mvc.static-path-pattern: /** 表示对于任意路径的静态资源的访问
spring.mvc.resources.static-locations 表示对于以上静态的访问,存放的静态资源页面的路径都是哪是在那些地方
默认情况下,对于所有的对静态资源的访问,首先到项目根目录(通常为webapp)中找对应的资源文件,如果未找到则到classpath下的META-INF目录中找,如果还是未找到则到classpath下的resources目录中找,以此类推。静态资源的搜索顺序是按照spring.mvc.resources.static-locations 配置项所配置的顺序来的,一旦搜索到了匹配的资源,则立即停止搜索并返回搜索到的资源。
当然,绝大多数况下,我们并不需要对静态资源做什么特殊的配置,因为默认的配置已经足够好、足够人性化了。
-------------------------
application.properties中的其他配置项,如
server.port=7000 #配置内嵌servlet容器端口
server.servlet-path=/ #配置内嵌servlet容器根路径
server.context-path=/springWeb #配置内嵌servlet容器中当前web应用的访问路径
......