2016-10-31 136 views
0

您好java程序員,根據活動配置文件無法讀取屬性文件

我在閱讀基於活動配置文件的屬性文件時遇到問題。我創建了一個彈簧啓動應用程序,我想爲不同的環境部署我的應用程序,如開發和生產。我搜索了很多,但我找不到解決我的問題的方法。

我在編輯配置菜單中設置了一個配置文件。 active profile in edit configuraions

我在我的src/main/resources中有一個名爲application-dev.properties的屬性文件,我有一個Settings.java,我想讀取屬性文件。

這是我Settings.java

@Configuration 
@Component 
public class Settings { 

    private static Logger log = Logger.getLogger(Settings.class); 

    @Value("${TradingBot.production}") 
    public boolean isProduction; 

    @Value("${api.KEY}") 
    public static String API_KEY; 

    @Value("${api.ORDERS_URL}") 
    public static String ORDERS_URL; 

    @Value("${api.TRADES_URL}") 
    public static String TRADES_URL; 

    @Value("${api.PARTICIPANTS_URL}") 
    public static String PARTICIPANTS_URL; 

    @Value("${api.INDIVIDUAL_URL}") 
    public static String INDIVIDUAL_URL; 

    @Value("${api.BALANCE_URL}") 
    public static String BALANCE_URL; 

    @Value("${api.TRANSACTIONS_URL}") 
    public static String TRANSACTIONS_URL; 

    @Bean 
    public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer(){ 
     return new PropertySourcesPlaceholderConfigurer(); 
    } 
} 

根據彈簧的文檔,這應該是足夠的讀取正確的屬性文件,不幸的是我得到一個空字符串當我打印的價值。

當我運行該項目時,它會給我下面的輸出。

2016-10-31 13:44:04.011 INFO 32992 --- [   main] TradingBot   : The following profiles are active: dev 

我希望有人能幫助我。

+2

'@ Value'不適用於靜態成員。 –

+0

您可能應該只使用一個'@ ConfigurationProperties'類的值,然後將其作爲方法參數注入'@ Bean'。 – chrylis

+0

謝謝@ M.Deinum我不知道這一點。 –

回答

1

感謝M.Denium,我知道問題出在哪裏。我可以在二傳手添加@Value物業爲例解決它:

public static String API_KEY; 

    public static String ORDERS_URL; 

    public static String TRADES_URL; 

    public static String PARTICIPANTS_URL; 

    public static String INDIVIDUAL_URL; 

    public static String BALANCE_URL; 

    public static String TRANSACTIONS_URL; 

    @Value("${api.KEY}") 
    public void setAPI_KEY(String API_KEY) { 
     this.API_KEY = API_KEY; 
    } 

    @Value("${api.ORDERS_URL}") 
    public void setORDERS_URL(String ORDERS_URL) { 
     this.ORDERS_URL = ORDERS_URL; 
    } 

    @Value("${api.TRADES_URL}") 
    public void setTRADES_URL(String TRADES_URL) { 
     this.TRADES_URL = TRADES_URL; 
    } 

    @Value("${api.PARTICIPANTS_URL}") 
    public void setPARTICIPANTS_URL(String PARTICIPANTS_URL) { 
     this.PARTICIPANTS_URL = PARTICIPANTS_URL; 
    } 

    @Value("${api.INDIVIDUAL_URL}") 
    public void setINDIVIDUAL_URL(String INDIVIDUAL_URL) { 
     this.INDIVIDUAL_URL = INDIVIDUAL_URL; 
    } 

    @Value("${api.BALANCE_URL}") 
    public void setBALANCE_URL(String BALANCE_URL) { 
     this.BALANCE_URL = BALANCE_URL; 
    } 

    @Value("${api.TRANSACTIONS_URL}") 
    public void setTRANSACTIONS_URL(String TRANSACTIONS_URL) { 
     this.TRANSACTIONS_URL = TRANSACTIONS_URL; 
    } 

在這種情況下,變量仍是靜態的,它可以從屬性文件的價值。