美文网首页
SpringBoot配置之application.propert

SpringBoot配置之application.propert

作者: hk_faith | 来源:发表于2019-08-17 18:52 被阅读0次

    简述

    Spring Boot使用了一个全局的配置文件application.properties,放在src/main/resources目录下或者src/main/resources/config下。在 src/main/resources/config 下的优先级高 。Sping Boot的全局配置文件的作用是对一些默认配置的配置值进行修改。

    自定义属性

    在application.properties

    com.example.name="MJ"
    
    @RestController
    public class HelloController {
       @Value("${com.example.name}")
        private String name;
    
        @GetMapping("/user")
        public String info(){
            return  name;
        }
    }
    

    属性映射到类中

    @Configuration
    @ConfigurationProperties(prefix = "com.example")
    public class ConfigBean {
        private String name;
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
    }
    
    @RestController
    @EnableConfigurationProperties({ConfigBean.class})
    public class HelloController {
    
        @Autowired
        ConfigBean configBean;
    
        @GetMapping("/user2")
        public String info2(){
            String name = configBean.getName();
            return name;
        }   
    }
    
    

    使用自定义配置文件

    新建 test.properties

    my.name="who"
    
    @Configuration
    @ConfigurationProperties(prefix = "my")
    @PropertySource("classpath:test.properties")
    public class ConfigTestBean {
        private String name;
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
    }
    
    @RestController
    @EnableConfigurationProperties({ConfigBean.class,ConfigTestBean.class})
    public class HelloController {
    
        @Autowired
        ConfigBean configBean;
    
        @Autowired
        ConfigTestBean configTestBean;
    
        @GetMapping("/user2")
        public String info2(){
            String name = configBean.getName();
            return name;
        }
    
        @GetMapping("/user3")
        public String info3(){
            String name = configTestBean.getName();
            return  name;
        }
    }
    

    @Component 或 @Configuration 都可以当 ,会被 当成 bean 来管理

    随机值分配

    my.secret=${random.value}
    my.number=${random.int}
    my.bignumber=${random.long}
    my.uuid=${random.uuid}
    my.number.less.than.ten=${random.int(10)}
    my.number.in.range=${random.int[1024,222222]}
    
    

    参数间引用

    com.example.name="MJ"
    com.example.say="hello"
    com.example.example=${com.example.name} say : ${com.example.say}
    

    Profile-多环境配置

    在Spring Boot中多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应你的环境标识,比如:

    • application-dev.properties:开发环境
    • application-prod.properties:生产环境

    想要使用对应的环境,只需要在application.properties中使用spring.profiles.active属性来设置,值对应上面提到的{profile},这里就是指dev、prod这2个。

    启动项目动时候带上

    java -jar xxx.jar --spring.profiles.active=dev
    

    参考:
    Spring Boot干货系列:配置文件解析
    江南一点雨
    江南一点雨

    相关文章

      网友评论

          本文标题:SpringBoot配置之application.propert

          本文链接:https://www.haomeiwen.com/subject/eqfmrctx.html