Spring Boot 一些基本配置
# 定製化Banner
Spring Boot 項目在啓動的時候會有一個默認的啓動圖案:
1 |
. ____ _ __ _ _ |
我們可以 把這個圖案修改爲我們自己想要的。 在 src/main/resources 目錄下新建banner.txt文件,然後將自己的圖案粘貼進去即可,ASCII圖案可通過網址: http://www.network-science.de/ascii/ 一鍵生成,比如輸入mrbird 生成團後複製到banner.txt, 啓動項目。
banner 也可以關閉,在main方法中:
public static void main(String[] args) {
SpringApplication app = new SpringApplication(DemoApplication.class);
app.setBannerMode(Mode.OFF);
app.run(args);
}
# 全局配置文件
在 src/main/resources 目錄下,Spring Boot提供了一個名爲application.properties 的全局配置文件,可對一些默認配置的配置值進行修改
$ 自定義屬性值
Spring Boot允許我們在 application.properties 下自定義一些屬性.比如:
1 |
mrbird.blog.name=mrbird's blog |
定義一個BlogProperties Bean, 通過@Value(“${屬性名}”)來加載配置文件中的屬性值
@Component
public class BlogProperties {
@Value("${mrbird.blog.name}")
private String name;
@Value("${mrbird.blog.title}")
private String title;
// get,set略
}
編寫IndexController,注入該Bean
@RestController
public class IndexController {
@Autowired
private BlogProperties blogProperties;
@RequestMapping("/")
String index() {
return blogProperties.getName()+"——"+blogProperties.getTitle();
}
}
在屬性非常多的情況下,也可以定義一個和配置文件對應的Bean:
@ConfigurationProperties(prefix="mrbird.blog")
public class ConfigBean {
private String name;
private String title;
// get,set略
}
通過註解@configurationProperties(prefix=”mrbird.blog”) 指明瞭屬性的通用前綴,通用前綴加屬性名和配置文件名一一對應。
除此之外還需在Spring Boot入口類加上註解 @EnableConfigurationProperties({ConfigBean.class})來啓用該配置
1 |
@SpringBootApplication |
之後便可在IndexController中注入該Bean,並使用了。
1 |
@RestController |
$ 屬性間的引用
在application.properties 配置文件中,各個屬性可以相互引用,如下:
mrbird.blog.name=mrbird's blog
mrbird.blog.title=Spring Boot
mrbird.blog.wholeTitle=${mrbird.blog.name}--${mrbird.blog.title}
# 自定義配置文件
除了可以在application.properties 裏配置屬性,我們還可以自定義一個配置文件,在src/main/resources目錄下新建一個test.properties:
test.name=KangKang
test.age=25
定義一個對應該配置文件的Bean:
@Configuration
@ConfigurationProperties(prefix=”test”)
@PropertySource(“classpath: test.properties”)
@Component
public class TestConfigBean{
private String name;
private int age;
}
# 通過命令行設置屬性值
在運行Spring Boot jar文件時,可以使用java jar xxx.jsr –server.port=8081 來改變端口的值,這條命令等價於我們手動到application.properties中修改。
如果不想項目的配置被命令行修改,可以在入口文件的main方法中進行如下設置:
1 |
public static void main(String[] args) { |
# 使用XML配置
雖然Spring Boot並不推薦我們繼續使用xml配置,但如果出現不得不使用xml配置的情況,Spring Boot允許我們在入口類裏通過註解 @ImportResource({“classpath: some-application.xml”})來引入xml配置文件
# Profile配置
Profile用來針對不同的環境使用不同的配置文件,多環境配置文件必須以application-{profile}.properties的格式命名,其中{profile}爲環境標識符,比如定義兩個配置文件
- application-dev.properties:開發環境
1 |
server.port=8080 |
- application-prod.properties:生產環境
1 |
server.port=8081 |
至於哪個具體的配置文件會被加載,需要在application.properties文件中通過spring.profiles.active屬性來設置,其值對應{profile}值。
如:spring.profiles.active=dev
就會加載application-dev.properties配置文件內容。可以在運行jar文件的時候使用命令java -jar xxx.jar --spring.profiles.active={profile}
切換不同的環境配置。