1. 程式人生 > >Spring中的Properties

Spring中的Properties

class bean ring path fig property active fix []

Properties 註入

  • 通過 xml 配置
  • 通過 @PropertySource 配置
  • PropertyPlaceholderConfigurer
  • PropertySourcesPlaceholderConfigurer

Properties 的使用

  • 在 xml 配置文件中使用
  • 通過 @Value 註入使用
  • 通過 Environment 獲取
  • 通過 application.properties 獲取

Spring Boot 相關

  • @ConfigurationProperties
  • 配置優先級

Properties 配置

通過 xml 配置

<context:property-placeholder location="classpath:sys.properties" />

通過 @PropertySource 配置

@PropertySource("classpath:sys.properties")
@Configuration
public class DemoConfig {

}

@PropertySource 在這裏必須搭配 @Configuration 來使用。

PropertyPlaceholderConfigurer

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>classpath:sys.properties</value>
        </list>
    </property>
    <property name="ignoreUnresolvablePlaceholders" value="true"/>
      <!-- 這裏可以配置一些屬性 -->
</bean>  

java configuration 版本

@Bean
public PropertyPlaceholderConfigurer propertiess() {
    PropertyPlaceholderConfigurer ppc = new PropertyPlaceholderConfigurer();
    Resource[] resources = new ClassPathResource[]{new ClassPathResource("sys.properties")};
    ppc.setLocations(resources);
    ppc.setIgnoreUnresolvablePlaceholders(true);
    return ppc;
}

PropertySourcesPlaceholderConfigurer

<bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>classpath:sys.properties</value>
        </list>
    </property>
    <property name="ignoreUnresolvablePlaceholders" value="true"/>
    <!-- 這裏可以配置一些屬性 -->
</bean>

java configuration 版本

@Bean
public PropertySourcesPlaceholderConfigurer properties() {
    PropertySourcesPlaceholderConfigurer pspc = new PropertySourcesPlaceholderConfigurer();
    Resource[] resources = new ClassPathResource[]{new ClassPathResource("sys.properties")};
    pspc.setLocations(resources);
    pspc.setIgnoreUnresolvablePlaceholders(true);
    return pspc;
}

Properties 的使用

在 xml 配置文件中使用

<bean id="xxx" class="com.demo.Xxx">
      <property name="url" value="${mysql.jdbc.url}" />
</bean>

通過 @Value 註入使用

@Value("${demo.jdbc.url}")
private String url;

通過 Environment 獲取

只有使用註解 @PropertySource 的時候可以用,否則會得到 null。

@Autowired
private Environment env;

public String getUrl() {
    return env.getProperty("demo.jdbc.url");
}  

通過 application.properties 獲取 

demo.database.url=jdbc:mysql:  

Spring Boot 相關

@ConfigurationProperties

application.properties
demo.db.url=jdbc:mysql: demo.db.username=test demo.db.password=123456 @Configuration @ConfigurationProperties(prefix = "demo.db") @Data public class DataBase { String url; String username; String password; }

配置優先級

java -Dspring.profiles.active=env -jar app.jar

如果存在這兩個文件,application.propertiesapplication-env.properties ,則兩個文件中的配置都會註冊進去,如果有重復的 key,application-env.properties 文件中的優先級較高。

總結:啟動參數 > application-{env}.properties > application.properties

  

Spring中的Properties