東昌府網(wǎng)站建設(shè)公司營銷對企業(yè)的重要性
Spring Boot 核心配置文件
- 1、application.properties
- 2、application.yml
- 使用建議
- 3、常用配置項(xiàng)
- 服務(wù)器配置
- 數(shù)據(jù)庫配置
- 日志配置
- 其他配置
- 4、配置文件的加載順序
- 5、配置文件的占位符
- 6、配置文件的動態(tài)刷新
- 7、配置文件的屬性分組
- 定義屬性分組
- 綁定屬性分組
- 使用屬性分組
- 總結(jié)
Spring Boot 是一個(gè)基于 Spring 框架的快速開發(fā)、簡化配置、約定優(yōu)于配置的框架。在 Spring Boot 應(yīng)用中,核心配置文件是
application.properties
或application.yml
,這兩個(gè)文件都可以用來配置應(yīng)用程序的屬性和環(huán)境。
1、application.properties
application.properties
是基于屬性文件的配置格式,支持 key-value 形式的鍵值對。在 Spring Boot 中,可以在 application.properties 文件中配置各種應(yīng)用程序?qū)傩?#xff0c;如端口號、數(shù)據(jù)庫連接、日志級別等等。
以下是 application.properties
的一個(gè)示例:
server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=root
logging.level.org.springframework=DEBUG
上面的示例中,配置了應(yīng)用程序的端口號為 8080,數(shù)據(jù)庫連接為 MySQL 數(shù)據(jù)庫,日志級別為 DEBUG 等。
2、application.yml
application.yml
是基于 YAML 格式的配置文件,支持層級結(jié)構(gòu)的配置形式,可以更加清晰地表達(dá)配置項(xiàng)之間的關(guān)系。與 application.properties
相比,application.yml
更易讀、易維護(hù),也更加靈活。
以下是 application.yml
的一個(gè)示例:
server:port: 8080
spring:datasource:url: jdbc:mysql://localhost:3306/mydbusername: rootpassword: root
logging:level:org.springframework: DEBUG
上面的示例中,與 application.properties 的示例配置項(xiàng)相同,但是使用了 YAML 格式的層級結(jié)構(gòu)。在 YAML 中,使用縮進(jìn)來表示層級關(guān)系,比如 spring.datasource.url 就是 spring 的子級,datasource 是 spring 的子級,url 是 datasource 的子級。
使用建議
盡量使用 application.yml,因?yàn)樗屿`活、易讀、易維護(hù);對于簡單的配置項(xiàng),可以使用 application.properties
;在編寫配置文件時(shí),注意縮進(jìn)和空格的使用,這是 YAML 格式的重要特點(diǎn);在配置文件中,可以使用 @Value 注解來注入配置屬性,也可以使用 @ConfigurationProperties
來批量注入配置屬性。
3、常用配置項(xiàng)
以下是一些常用的 Spring Boot 配置項(xiàng):
服務(wù)器配置
server.port:應(yīng)用程序監(jiān)聽的端口號,默認(rèn)為 8080;
server.servlet.context-path:應(yīng)用程序的上下文路徑,默認(rèn)為空;
server.tomcat.access-log-enabled:是否開啟訪問日志,默認(rèn)為 false。
數(shù)據(jù)庫配置
spring.datasource.url:數(shù)據(jù)庫連接 URL;
spring.datasource.username:數(shù)據(jù)庫用戶名;
spring.datasource.password:數(shù)據(jù)庫密碼;
spring.datasource.driver-class-name:數(shù)據(jù)庫驅(qū)動類名;
spring.datasource.hikari.*:Hikari 連接池的配置項(xiàng)。
日志配置
logging.level.*:設(shè)置日志級別,可以針對不同的包設(shè)置不同的日志級別;
logging.file.name:指定日志文件名;
logging.file.path:指定日志文件路徑;
logging.pattern.console:設(shè)置控制臺日志輸出格式;
logging.pattern.file:設(shè)置文件日志輸出格式。
其他配置
spring.profiles.active:指定應(yīng)用程序的活動配置文件,如 dev、prod 等;
spring.main.allow-bean-definition-overriding:是否允許 Bean 覆蓋,默認(rèn)為 false;
spring.main.banner-mode:設(shè)置啟動時(shí)顯示的 Banner 模式,如 off、console、log 等。
4、配置文件的加載順序
在 Spring Boot 中,配置文件有多種加載方式,包括:
- classpath:/ 下的 application.properties 或 application.yml;
- classpath:/config/ 下的 application.properties 或 application.yml;
- 外部配置文件,如 /etc/myapp/application.properties 或 file:///opt/myapp/application.yml。
這些配置文件的加載順序是:
- classpath:/config/application.yml(或 .properties);
- classpath:/application.yml(或 .properties);
- 外部配置文件。
其中,1 和 2 的順序可以顛倒,即先加載 classpath:/application.yml(或 .properties),再加載 classpath:/config/application.yml(或 .properties)。
如果同時(shí)存在多個(gè)配置文件,會按照上述順序進(jìn)行合并,后面的配置會覆蓋前面的配置。
5、配置文件的占位符
在配置文件中,可以使用 ${…} 形式的占位符來引用其他配置屬性的值。例如:
server:port: 8080
myapp:name: myappversion: 1.0greeting: Hello, ${myapp.name} ${myapp.version}!
上面的示例中,myapp.greeting 屬性使用了 ${myapp.name} 和 ${myapp.version} 占位符來引用其他屬性的值。
6、配置文件的動態(tài)刷新
在 Spring Boot 應(yīng)用程序中,如果想要?jiǎng)討B(tài)地刷新配置文件,可以使用 @RefreshScope 注解。該注解會在配置文件變化時(shí),自動更新注入該注解的 Bean。
@RestController
@RefreshScope
public class MyController {@Value("${myapp.greeting}")private String greeting;@GetMapping("/greeting")public String greeting() {return greeting;}
}
上面的示例中,使用了 @RefreshScope 注解來動態(tài)刷新 greeting 屬性的值。當(dāng) myapp.name 或 myapp.version 屬性變化時(shí),greeting 屬性的值也會隨之變化。
7、配置文件的屬性分組
在實(shí)際開發(fā)中,應(yīng)用程序的配置文件可能會變得非常復(fù)雜,屬性的數(shù)量也會很多。為了更好地組織和管理屬性,可以使用 Spring Boot 的屬性分組功能。
定義屬性分組
在配置文件中,可以使用 @ConfigurationProperties 注解來定義屬性分組。例如:
@ConfigurationProperties(prefix = "myapp")
public class MyAppProperties {private String name;private String version;// getters and setters
}
上面的示例中,使用 @ConfigurationProperties 注解定義了一個(gè)名為 myapp 的屬性分組,并聲明了 name 和 version 兩個(gè)屬性。在 application.yml 文件中,可以通過 myapp.name 和 myapp.version 來訪問這兩個(gè)屬性的值。
綁定屬性分組
在 Spring Boot 中,可以通過 @EnableConfigurationProperties 或 @ConfigurationPropertiesScan 注解來綁定屬性分組。例如:
@SpringBootApplication
@EnableConfigurationProperties(MyAppProperties.class)
public class MyAppApplication {// ...
}
上面的示例中,使用 @EnableConfigurationProperties 注解來綁定了 MyAppProperties 屬性分組。
使用屬性分組
在應(yīng)用程序中,可以使用 @Autowired 或 @Inject 注解來注入屬性分組。例如:
@RestController
public class MyController {@Autowiredprivate MyAppProperties myAppProperties;@GetMapping("/info")public MyAppProperties info() {return myAppProperties;}
}
上面的示例中,使用 @Autowired 注解注入了 MyAppProperties 屬性分組,并在 info 接口中返回了該屬性分組的值。
總結(jié)
在 Spring Boot 中,可以通過屬性分組來組織和管理配置文件中的屬性。使用 @ConfigurationProperties
解定義屬性分組,使用 @EnableConfigurationProperties
或 @ConfigurationPropertiesScan
注解來綁定屬性分組,在應(yīng)用程序中使用 @Autowired
或 @Inject 注解注入屬性分組。通過合理地使用屬性分組,可以使應(yīng)用程序的配置更加清晰、易維護(hù)、易擴(kuò)展。