• Spring Boot 属性配置


    属性的配置在项目中经常被使用到,Spring Boot 相对spring框架配置文件对属性进行配置简化了很多。

    一:属性配置优先级

     

    1.命令行参数
    2.来自java:comp/env的JNDI属性
    3.Java系统属性(System.getProperties())
    4.操作系统环境变量
    5.RandomValuePropertySource配置的random.*属性值
    6.jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置文件
    7.jar包内部的application-{profile}.properties或application.yml(带spring.profile)配置文件
    8.jar包外部的application.properties或application.yml(不带spring.profile)配置文件
    9.jar包内部的application.properties或application.yml(不带spring.profile)配置文件
    10.@Configuration注解类上的@PropertySource
    11.通过SpringApplication.setDefaultProperties指定的默认属性

    (1.1)命令行参数

    通过java -jar myApp.jar --name="Spring Boot" --server.port=8081方式来传递参数。命令行参数在myApp.jar 后面设置。

    (1.2)J2EE 上下文环境变量

    (1.3)java系统变量

    java -Dname="ws" -jar myApp.jar,设置name属性为ws

    如果设置java -Dname="ws" -jar app.jar --name="Boot"   由于命令行参数优先级高,则name属性为Boot

    (1.4)操作系统环境变量

    操作系统环境变量如安装JAVA和MAVEN时配置的JAVA_HOME,MAVEN_HOME等,这些都是操作系统的环境变量。

    (1.5)随机值

    # 随机字符串
    com.ws.blog.value=${random.value}
    # 随机int
    com.ws.blog.number=${random.int}
    # 随机long
    com.ws.blog.bignumber=${random.long}
    # 10以内的随机数
    com.ws.blog.test1=${random.int(10)}
    # 10-20的随机数
    com.ws.blog.test2=${random.int[10,20]}

    二:application.properties文件加载顺序

    1. 当前路径下的/config子目录。
    2. 当前路径。
    3. classpath路径下的/config子路径。
    4. classpath路径

    三:配置属性类

    (3.1) 采用@Value("${XXX}")配置

     1 @Configuration
     2 public class MyConfig {
     3     @Value("${ws.name}")
     4     private String name;
     5     @Value("${ws.age}")
     6     private Integer age;
     7 
     8     public String getName() {
     9         return name;
    10     }
    11 
    12     public void setName(String name) {
    13         this.name = name;
    14     }
    15 
    16     public Integer getAge() {
    17         return age;
    18     }
    19 
    20     public void setAge(Integer age) {
    21         this.age = age;
    22     }
    23 }

    (3.2)采用@ConfigurationProperties 配置

    首先在pom中添加如下依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <optional>true</optional>
    </dependency>

    application.properties文件中添加如下配置

    #My Config
    ws.name=ws@ConfigurationProperties
    ws.age=18
    ws.listAddress[0]=add1
    ws.listAddress[1]=add2

    配置MyConfig类

    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.context.annotation.Configuration;
    
    import java.util.List;
    
    @Configuration
    @ConfigurationProperties(prefix = "ws")
    public class MyConfig {
    
        private String name;
    
        private Integer age;
    
        private List<String> listAddress;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    
        public List<String> getListAddress() {
            return listAddress;
        }
    
        public void setListAddress(List<String> listAddress) {
            this.listAddress = listAddress;
        }
    }

     (3.3)配置系统环境属性

    本机系统属性MAVEN_HOME=E:mavenapache-maven-3.5.0

    @ConfigurationProperties
    public class MyProperties {
        String mavenHome;
    
        public String getMavenHome() {
            return mavenHome;
        }
    
        public void setMavenHome(String mavenHome) {
            this.mavenHome = mavenHome;
        }
    }
    @Configuration
    @EnableConfigurationProperties(MyProperties.class)
    public class MyConfiguration {
    }
    @Controller
    public class PropertiesController {
    
        private final static Logger logger = LoggerFactory.getLogger(PropertiesController.class);
        @Autowired
        private MyProperties myProperties;
    
        @RequestMapping("/myConfig")
        @ResponseBody
        public String myConfig() throws  Exception{
            logger.info(myProperties.getMavenHome());
            return myProperties.getMavenHome();
        }
    }

    运行后输出:E:mavenapache-maven-3.5.0

      第二步中将MyProperties通过@EnableConfigurationProperties注解注册。

  • 相关阅读:
    【hdu 4135】Co-prime
    【cdoj 1544】当咸鱼也要按照基本法
    【SRM 717 DIV2 C】DerangementsDiv2
    【codeforces 821E】Okabe and El Psy Kongroo
    【SRM 717 div2 B】LexmaxReplace
    【SRM 717 div2 A】 NiceTable
    Network architecture for minimalistic connected objects
    C# 委托的理解
    50条超精辟的经典语录:哗众,可以取宠,也可以失宠!
    50条超精辟的经典语录:哗众,可以取宠,也可以失宠!
  • 原文地址:https://www.cnblogs.com/fdzfd/p/7862016.html
Copyright © 2020-2023  润新知