SpringBootのApplication.Propertiesはどのように使いますか?


一般的にSpringBootプロジェクトにはデフォルトのプロファイルApplication.Propertiesがあります.変数のリストに相当し、システム起動時の*.iniファイルに似ています.一般的にはResourcesフォルダの下に置かれます.では、プログラムでは、Application.Propertiesの構成情報をどのように読み取り、使用しているのでしょうか.一般的には3つの方法があります:1.@Valueは一般的にプログラム起動クラスで使用され、ある属性を宣言して初期化することに相当します.Application.Propertiesプロファイル情報は次のとおりです.
com.zyd.type=Springboot - @Value
com.zyd.title=  @Value      
起動クラスに@Value('${com.zyd.type})を追加
public class Applaction {

    @Value("${com.zyd.type}")
    private String type;

    @Value("${com.zyd.title}")
    private String title;

    @RequestMapping("/value")
    public Map value() throws UnsupportedEncodingException {
        Map map = new HashMap();
        map.put("type", type);
        // *.properties         ISO-8859-1    ,               
        map.put("title", new String(title.getBytes("ISO-8859-1"), "UTF-8"));
        return map;
    }

    public static void main(String[] args) throws Exception {
        SpringApplication application = new SpringApplication(Applaction.class);
        application.run(args);
    }
}
2.Environmentは一般的にプログラム起動クラスで使用され、このクラスの方法で属性情報を取得することに相当する.Application.Propertiesプロファイル情報は次のとおりです.
com.zyd.type=Springboot - @Value
com.zyd.title=  @Value      
起動クラスではEnvironmentを使用して構成情報を取得できます.
....
import org.springframework.core.env.Environment;
....
public class Applaction {

    @Autowired
    private Environment env;

    @RequestMapping("/env")
    public Map env() throws UnsupportedEncodingException {
        Map map = new HashMap();
        map.put("type", env.getProperty("com.zyd.type"));
        map.put("title", new String(env.getProperty("com.zyd.title").getBytes("ISO-8859-1"), "UTF-8"));
        return map;
    }

    public static void main(String[] args) throws Exception {
        SpringApplication application = new SpringApplication(Applaction.class);
        application.run(args);
    }
}
3.@ConfigurationPropertiesは一般的にカスタムクラスで使用され、カスタムクラスで適切な方法を設定して構成情報を取得することを前提として、カスタムクラスの方法で属性情報を取得することに相当します.カスタムクラス
public class PropertiesConfig {

    public String type;
    public String title;
    public Map login = new HashMap();
    public List urls = new ArrayList<>();

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getTitle() {
        try {
            return new String(title.getBytes("ISO-8859-1"), "UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public Map getLogin() {
        return login;
    }

    public void setLogin(Map login) {
        this.login = login;
    }

    public List getUrls() {
        return urls;
    }

    public void setUrls(List urls) {
        this.urls = urls;
    }

} 
カスタムクラスを使用して構成情報を読み込む
....
import com.zyd.property.config.PropertiesConfig;
....
public class Applaction {

    @Autowired
    private PropertiesConfig propertiesConfig;

    @RequestMapping("/config")
    public Map configurationProperties() {
        Map map = new HashMap();
        map.put("type", propertiesConfig.getType());
        map.put("title", propertiesConfig.getTitle());
        map.put("login", propertiesConfig.getLogin());
        map.put("urls", propertiesConfig.getUrls());
        return map;
    }

    public static void main(String[] args) throws Exception {
        SpringApplication application = new SpringApplication(Applaction.class);
        application.run(args);
    }
}
もちろん、上記の読み込みはすべてデフォルトのプロファイルであり、登録リスナーを加えることでプロファイルをロードすることもできます.すなわち、PropertiesLoaderUtilsメソッドです.