SpringBoot之讀取配置文件

@Value

@Value("xxx")
字符串、字面量、Boolean值、$key支持SrpingEL(#{xxx})、配置文件中、環境變量中獲取值。
但是需要注意的是,@Value這個註解並不支持複雜數據類型的注入。像List、Map、Set之類的。

@ConfigurationProperties

一、@ConfigurationProperties.通過該註解,可以讀取到application.properties和application
配置文件中的屬性值。
1.註解中 prefix 屬性是指定Bean綁定哪個屬性變量。
2.支持鬆散綁定規則
3.類本身可以包私有化
4.類字段不需設置setter方法

二、鬆散規則中,一下形式的鍵值都可以綁定到bean對應的屬性中。
例子:
    bean.varName=value
    bean.varname=value
    bean.var_name=value
    bean.var-name=value
    bean.VAR_NAME=value
注意,最後一種方式我個人多用於靜態變量或者系統變量。
三、激活 @ConfigurationProperties
    1.需要數據綁定的Bean,必須標註@Component、 @ConfigurationProperties。
    2.使用Java Configuration來獲取Bean,整不用再Bean上註解@Conponent。
    3.@EnableConfigurationProperties註解,告知SpringBoot哪個Bean類需要數據綁定。
在特定於模塊的 @Configuration 類上使用@EnableConfigurationProperties,該類也可以利用
包私有的可見性對應用程序的其餘部分隱藏屬性。

@PropertyResource

該註解是用於定位非全局配置文件。該註解的value屬性是一個字符串數組,可以定義多個配置文件的路徑。
使用該註解,可以搭配@ConfigurationProperties註解,將配置文件的變量屬性值綁定到Bean中對應的屬性
上。
#jdbc.properties
mysql.jdbc_driverClassName=com.mysql.cj.jdbc.Driver
mysql.jdbc_url=jdbc:mysql://localhost:3306/pcloudpan?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=GMT%2B8
mysql.jdbc_user=root
mysql.jdbc_password=root
//DataSourceConfig 測試
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;

@PropertySource(value = {"classpath:jdbc.properties"})
@Component
@ConfigurationProperties(prefix = "mysql")
public class DataSourceConfig {
    private String jdbcDriverClassName;
    private String jdbcUrl;
    private String jdbcUser;
    private String jdbcPassword;

    public String getJdbcDriverClassName() {
        return jdbcDriverClassName;
    }

    public void setJdbcDriverClassName(String jdbcDriverClassName) {
        this.jdbcDriverClassName = jdbcDriverClassName;
    }

    public String getJdbcUrl() {
        return jdbcUrl;
    }

    public void setJdbcUrl(String jdbcUrl) {
        this.jdbcUrl = jdbcUrl;
    }

    public String getJdbcUser() {
        return jdbcUser;
    }

    public void setJdbcUser(String jdbcUser) {
        this.jdbcUser = jdbcUser;
    }

    public String getJdbcPassword() {
        return jdbcPassword;
    }

    public void setJdbcPassword(String jdbcPassword) {
        this.jdbcPassword = jdbcPassword;
    }

    @Override
    public String toString() {
        return "DataSourceConfig{" +
                "jdbcDriverClassName='" + jdbcDriverClassName + '\'' +
                ", jdbcUrl='" + jdbcUrl + '\'' +
                ", jdbcUser='" + jdbcUser + '\'' +
                ", jdbcPassword='" + jdbcPassword + '\'' +
                '}';
    }
}

@ImportResource

該註解用於導入Spring的配置文件。其中value屬性是一個數組,支持多個配置文件的導入。但是現在一般都用註解
@Bean、@Conponant、@Controller、@Service...來對Bean進行註冊,加入到SpringIoc容器中。
例如:@ImportResource("classpath:xxx.xml","classpath:xxxx.xml")

@Configuration

被該註解的標註的類是配置類,通過該註解,SpringBoot得知這是一個配置類,在這裏我們可以對spring進行一些配置。
在該類我們可以在方法上使用@Bean做Bean的註冊、注入,獲取數據源的配置。在配置類上標註@ComponentScan,指定
掃描包;並把該包下被@Component所標註的類加載進Spring的容器中。
    @Configuration
    //@ComponentScan({"com.nubipan.sblearnling.service"})
    public class SpringAppConfig {
        @Bean
        public TestService testService(){
            return new TestService();
        }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章