SpringBoot構成データの読み出し方法

3821 ワード

SpringBoot構成データの読み出し方法
方法1:@Value("${spring.datasource.url}")のようにPropertyPlaceholderConfigurer.を読み取る.properties構成データセット、本方式は各種応用シーンに適応でき、本方式で構成ファイルを読み取ることを推奨する
@Component
public class DbConfig {
 
    @Value("${spring.datasource.database}")
    private String database;
    @Value("${spring.datasource.url}")
    private String url;
    @Value("${spring.datasource.username}")
    private String username;
    @Value("${spring.datasource.password}")
    private String password;
    @Value("${spring.datasource.driverClassName}")
    private String driverClassName;
 
    public String getDatabase() {
        return database;
    }
 
    public void setDatabase(String database) {
        this.database = database;
    }
 
    public String getUrl() {
        return url;
    }
 
    public void setUrl(String url) {
        this.url = url;
    }
 
    public String getUsername() {
        return username;
    }
 
    public void setUsername(String username) {
        this.username = username;
    }
 
    public String getPassword() {
        return password;
    }
 
    public void setPassword(String password) {
        this.password = password;
    }
 
    public String getDriverClassName() {
        return driverClassName;
    }
 
    public void setDriverClassName(String driverClassName) {
        this.driverClassName = driverClassName;
    }

 
}

方法2:この書き方システムはprefix接頭辞に基づいて構成データをデータエンティティ変数に自動的に注入します.この方法はいいですが、欠陥があります.私たちが作成したP r o p e t y P e r c e holderConfigurer拡張フィールドは無効になります.したがって、追加操作を必要としない単純な読み取り構成であれば、この方法が最も簡単です.
@Component
@ConfigurationProperties(prefix = "spring.datasource")
public class DbConfig {
 
    private String database;
    private String url;
    private String username;
    private String password;
    private String driverClassName;
   
 
    public String getDatabase() {
        return database;
    }
 
    public void setDatabase(String database) {
        this.database = database;
    }
 
    public String getUrl() {
        return url;
    }
 
    public void setUrl(String url) {
        this.url = url;
    }
 
    public String getUsername() {
        return username;
    }
 
    public void setUsername(String username) {
        this.username = username;
    }
 
    public String getPassword() {
        return password;
    }
 
    public void setPassword(String password) {
        this.password = password;
    }
 
    public String getDriverClassName() {
        return driverClassName;
    }
 
    public void setDriverClassName(String driverClassName) {
        this.driverClassName = driverClassName;
    }
 
}


方式3:Environmentオブジェクトの例を直接注入してpropertiesオブジェクトの属性を読み取ることができ、方式1の本質とはあまり差がなく、対応するフィールドのモデルオブジェクトを書く必要はありませんが、プログラムの読解性が友达ではなく、多重化率は高くありません.
@Component
public class DbConfig {
 
    @Autowired
    private Environment environment;
 
    public String getDatabase() {
        return environment.getProperty("spring.datasource.database");
    }
 
}

方法4:システム起動時にListenerを初期化し、PropertiesLoaderUtilsツールクラスを使用して指定したプロファイルを読み取り、Properties構成オブジェクトを取得します.この方法は、いつでもどこでも使用できます.
public class PropertiesListener implements ApplicationListener {
 
    @Override
    public void onApplicationEvent(ApplicationStartedEvent event) {
        try {
            Properties properties = PropertiesLoaderUtils.loadAllProperties("classpath:application.properties");
            System.out.println(properties);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
 
}

以上の4つの構成データのロード方式の比較と実際の応用に対して、私たちが生産の中で最もよく使うのは第1の方式ですが、最終的にどのように選択するかはあなたの実際のプロジェクトの構成ロード方式によって決まります.