SpringBoot-配置檔案屬性注入-3種方式
阿新 • • 發佈:2018-12-13
配置檔案:
datasource.username = admin
datasource.url = /hello/world
方式一: @Value
前提:
<!-- JavaBean處理工具包 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
使用:
@Component @Data public class PropertyBean { @Value("${datasource.url}") private String url; @Value("${datasource.username}") private String userName; }
方式二:
前提:
<!-- 支援 @ConfigurationProperties 註解 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <version>${spring-boot.version}</version> </dependency>
使用: @ConfigurationProperties
@Component
@Configuration
@EnableAutoConfiguration
public class PropertyBeanUtil {
@Bean
@ConfigurationProperties(prefix = "datasource")
public PropertyBean propertyBean() {
return new PropertyBean();
}
}
方式三:獲得Environment 的物件
@SpringBootApplication public class SpringBootDemo3Application { public static void main(String[] args) { final ApplicationContext ctx = SpringApplication.run(SpringBootDemo3Application.class, args); Environment environment = ctx.getEnvironment(); System.out.println(environment.getProperty("datasource.username")); } }
擴充套件:
使用@PropertySource註解載入自定義的配置檔案,但該註解無法載入yml配置檔案。然後可以使用@Value註解獲得檔案中的引數值
/**
* 載入properties配置檔案,在方法中可以獲取
* abc.properties檔案不存在,驗證ignoreResourceNotFound屬性
* 加上encoding = "utf-8"屬性防止中文亂碼,不能為大寫的"UTF-8"
*/
@Configuration
@PropertySource(value = {"classpath:/config/propConfigs.properties","classpath:/config/db.properties"},
ignoreResourceNotFound = true,encoding = "utf-8")
public class PropConfig {
// PropertySourcesPlaceholderConfigurer這個bean,
// 這個bean主要用於解決@value中使用的${…}佔位符。
// 假如你不使用${…}佔位符的話,可以不使用這個bean。
@Bean
public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
}