Spring Boot 基本配置 學習

Spring Boot 一些基本配置

 

# 定製化Banner

Spring Boot 項目在啓動的時候會有一個默認的啓動圖案:

1
2
3
4
5
6
7

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.5.9.RELEASE)

我們可以 把這個圖案修改爲我們自己想要的。 在 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
2

mrbird.blog.name=mrbird's blog
mrbird.blog.title=Spring Boot

 

定義一個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
2
3
4
5
6
7
8

@SpringBootApplication
@EnableConfigurationProperties({ConfigBean.class})

public class Application {
        
   
public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

之後便可在IndexController中注入該Bean,並使用了。

1
2
3
4
5
6
7
8
9
10

@RestController
public class IndexController {
    @Autowired
   
private ConfigBean configBean;
   
    @RequestMapping("/")
   
String index() {
       
return configBean.getName()+"——"+configBean.getTitle();
    }
}

$ 屬性間的引用

在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
2
3
4
5

public static void main(String[] args) {
    SpringApplication app =
new SpringApplication(Application.class);
    app.setAddCommandLineProperties(
false);
    app.run(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}切換不同的環境配置。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章