2017-05-05 114 views

回答

0

如果您遵循reference doc instructions,Spring將處理屬性加載。 總之...

我假設你使用Spring-Boot,因爲它是標記的。 如果您還沒有一個具有以下內容創建/src/main/resources/application.yml

myPro: 
    prop1: prop1value 
    prop2: prop2value 

然後,你可以只注入像這樣你的屬性值:

@SpringBootApplication 
public class DemoApplication implements CommandLineRunner { 

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

    @Value("${myProp.prop1}") 
    String prop1; 

    @Value("${myProp.prop2}") 
    String prop2; 

    @Override 
    public void run(String... args) throws Exception { 
     System.out.println(prop1); 
     System.out.println(prop2); 
    } 
} 
2

默認情況下,春季已經將所有的應用程序在其環境性能這是Properties一個包裝,例如:

@Autowired 
private Environment environment; 

public void stuff() { 
    environment.getProperty("myPro.prop1"); 
    environment.getProperty("myPro.prop2"); 
} 

不過,如果你只是想使用的值,你可以隨時使用@Value註釋,例如:

@Value("${myPro.prop1}") 
private String prop1; 
@Value("${myPro.prop2}") 
private String prop2; 

最後,如果你真的想要一個Properties對象只有一切myPro,您可以創建以下豆:

@ConfigurationProperties(prefix = "myPro") 
@Bean 
public Properties myProperties() { 
    return new Properties(); 
} 

現在可以自動裝配的屬性和使用它們:

@Autowired 
@Qualifier("myProperties") 
private Properties myProperties; 

public void stuff() { 
    myProperties.getProperty("prop1"); 
    myProperties.getProperty("prop2"); 
} 

在這種情況下,您不必將其綁定到Properties,但只要還有它有一個字段名prop1和另一個字段名prop2你可以使用自定義的POJO。

這三個選項中還列出了the documentation

屬性值可以直接被注入到使用@Value註解,通過Spring的Environment抽象訪問或通過@ConfigurationProperties綁定到結構化對象的豆類。