SpringBoot專案中獲取配置檔案的配置資訊

Java勸退師、發表於2020-12-20

系統配置檔案 application.yaml或者 application.properties 中的屬性值

假如我們配置檔案.yaml的資訊是

myconfig:
  username: abc
  password: 123

 或者.properties

myconfig.username=abc
myconfig.password=123

 

1.通過@Value

類需要被spring掃描到

@Component
public class MyConfig {
    @Value("myconfig.username")
    private String name;
    @Value("myconfig.password")
    private String password;
}

@Value()可以設定預設值

 @Value("myconfig.username:admin") //當沒有配置 myconfig.username的時候預設值是 admin
 @Value("myconfig.username:") //預設值是空字串

2.通過Environment

@Component
public class MyConfig {
    @Autowired
    private Environment environment;

    public String getUsername() {

        return environment.getProperty("myconfig.username");
    }
    public String getPassword() {

        return environment.getProperty("myconfig.password");
    }
}

Environment也可以設定預設值

environment.getProperty("myconfig.username",“admin”)//沒有配置myconfig.username的話預設值是admin

3.使用@ConfigurationProperties

先在主類加上啟動配置註解 @EnableConfigurationProperties

@SpringBootApplication
@EnableConfigurationProperties
public class SpringbootApplication {

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

}

編寫獲取配置資訊的類

@Component
@ConfigurationProperties(prefix = "myconfig")
//@PropertySource(value = "classpath:application.yml") 如果配置資訊在其他配置檔案中需要把檔名寫在這
public class MyConfig {

    private String username;
    private String password;
}

@Component 表示將該類標識為Bean

@ConfigurationProperties(prefix = "myconfig")用於繫結屬性,其中prefix表示所繫結的屬性的字首。

@PropertySource(value = "classpath:application.yml")表示配置檔案路徑。springboot能自動載入到的配置檔案不用寫 比如application.yml,application.properties,bootstrap.yml,bootstrap.properties,application-dev.yml。。。。

 

相關文章