一、简介
这里将介绍spring boot的基本配置项和约定。
二、默认约定
1、主类(注解@SpringBootApplication)命名
spring boot的主类通知以*Application命名。
2、spring boot默认扫描包的范围
spring boot会自动扫描主类的同级包或以下级包,所以主类通常放在groupId+articleId组合的包名下,
即所有类的最外层。
3、默认配置文件
application.properties(推荐)或application.yml(具有面向对象的特点)是spring boot的全局配置文件,
位置在src/main/resource下或类路径下的/config下。
读取时使用@Value注解,如
@Value("${fruit.name}")
private String fruitName;
4、默认日志配置
spring boot 默认以logback为日志框架,具体请查看logback使用的相关资料。
5、环境设置
环境配置文件格式为application-{profile}.properties(profile自定义,如可定义生产环境配置文件为application-prod.properties
开发环境配置文件为application-dev.properties),在application.properties文件中,配置spring.profiles.active=prod
来指定当前的环境。
6、静态资源路径
默认静态文件路径为:类路径下的/static、/pubilc、/resources和/META-INF/resources,这些文件夹下的静态文件/**,
可以通过http://localhost:8080/**直接访问。
7、设置favicon
默认favicon的文件名为favicon.ico,默认文件路径在类路径根目录、类路径META-INF/resources/、类路径resources、
类路径static/或类路径public/。
关闭可在配置文件application.properties中设置spring.mvc.favicon.enabled=false
三、默认配置修改
1、启动时默认图案修改
a)在网站http://patorjk.com/software/taag/上生成自定义图案字符;
b)将生成的字符粘贴到位于src/main/resource目录下的banner.txt文件(需新建)中
重启即可看到新的自定义图标。
关闭图案可在主类中设置bannerMode为Banner.Mode.OFF如下:
new SpringApplicationBuilder(SpringbootStudyApplication.class)
.bannerMode(Banner.Mode.OFF) //关闭启动时banner图片
.run(args);
2、修改启动时的端口和路径(相关配置类似)
直接在application.properties中修改,如下
#指定端口号
server.port=9090
#指定路径
server.servlet.context-path=/hello
重启项目后,则通过http://127.0.0.1:9090/hello才能访问到以前的根路径
修改端口号,还可以在启动主类时指定,如java -jar xx.jar --server.port=9090
3、添加xml配置文件
spring boot中提倡无xml配置,如项目中确实需要,可以使用注解@ImportResource加载xml配置,
如:@ImportResource("classpath:spring-config.xml")
4、添加新的配置文件
除了默认配置文件application.properties,还可以添加其它配置文件,通知注解@ProperySourcer
指定properties文件的位置,如@PropertySource("classpath:properties/stu.properties")
5、properties属性直接与bean关联
除了通过注解@Value配置属性外,还可以通过注解@ConfigurationProperties直接将配置与bean关联,
如:
定义stu.properties文件,
stu.stuNo=001
stu.stuName=rice
定义Stu类
package com.dragon.springbootselfstudy.bean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
@Component
@PropertySource("classpath:properties/stu.properties")
@ConfigurationProperties(prefix = "stu")
public class Stu {
private String stuNo;
private String stuName;
public String getStuNo() {
return stuNo;
}
public void setStuNo(String stuNo) {
this.stuNo = stuNo;
}
public String getStuName() {
return stuName;
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
@Override
public String toString() {
return "Stu{" +
"stuNo='" + stuNo + '\'' +
", stuName='" + stuName + '\'' +
'}';
}
}
注意:此时maven要添加依赖
org.springframework.boot
spring-boot-configuration-processor
true
四、备注
下面列出其它文件
1、完整maven依赖
4.0.0
com.dragon.springbootselfstudy
springbootselfstudy
1.0-SNAPSHOT
jar
spring boot study
org.springframework.boot
spring-boot-starter-parent
2.1.0.BUILD-SNAPSHOT
UTF-8
1.8
1.8
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-configuration-processor
true
org.apache.commons
commons-lang3
spring boot study
org.springframework.boot
spring-boot-maven-plugin
2、主类
package com.dragon.springbootselfstudy;
import com.dragon.springbootselfstudy.bean.Stu;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.Banner;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.context.annotation.PropertySource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
@RestController
@PropertySource("classpath:properties/stu.properties")
@SpringBootApplication
public class SpringbootStudyApplication {
@Value("${fruit.name}")
private String fruitName;
@Value("${stu.stuName}")
private String stuName;
@Resource
private Stu stu;
@RequestMapping("/")
public String index() {
System.out.println("fruitName : " + fruitName);
return "hello word !";
}
@RequestMapping("/settings")
public String hello() {
String settings = "fruitName : " + fruitName
+ " stu.name : " + stuName
+ " stu: " + stu;
return settings;
}
public static void main(String[] args) {
new SpringApplicationBuilder(SpringbootStudyApplication.class)
// .bannerMode(Banner.Mode.OFF) //关闭启动时banner图片
.run(args);
}
}