美文网首页springcloud面试
SpringBoot 配置分析(一)

SpringBoot 配置分析(一)

作者: 上进的小二狗 | 来源:发表于2018-08-16 18:16 被阅读59次

    一、引言

    二、文章思维导图

    思维导图

    三、实现

    3.1 获取配置的值,2种方式

    方式一:获取environment 对象 调用getProperty()
    local.ip = 192.168.91.111
    
    @SpringBootApplication
    public class SpringbootConfigurationApplication {
    
        public static void main(String[] args) {
            ConfigurableApplicationContext context = SpringApplication.run(SpringbootConfigurationApplication.class, args);
            System.out.println("配置文件内容输出:"+context.getEnvironment().getProperty("local.ip"));
            context.close();
        }
    }
    
    结果打印:
    纳入容器管理,需要Environment 对象注入,

    再编写个类UserConfig,注入Environment,编写个show 的方法,context 来获取对象来调用方法

    /**
     * @author liyao
     * @createTime 2018/8/16
     * @description
     */
    @Component
    public class UserConfig {
    
        @Autowired
        private Environment environment;
    
        /**
         * 配置文件信息打印
         */
        public void show(){
            System.out.println("=========local.ip:" + environment.getProperty("local.ip"));
        }
    
    }
    
    @SpringBootApplication
    public class SpringbootConfigurationApplication {
    
        public static void main(String[] args) {
            ConfigurableApplicationContext context = SpringApplication.run(SpringbootConfigurationApplication.class, args);
           // System.out.println("配置文件内容输出:"+context.getEnvironment().getProperty("local.ip"));
            context.getBean(UserConfig.class).show();
            context.close();
        }
    }
    
    结果打印:
    方式二:直接读取配置文件@Value("${ }")

    1、配置文件中加个 local.port = 8080

    local.ip = 192.168.91.111
    local.port = 8080
    

    2、定义属性

    @Component
    public class UserConfig {
    
        @Value("${local.port}")
        private String localPort;
    
        @Autowired
        private Environment environment;
    
        /**
         * 配置文件信息打印
         */
        public void show(){
            System.out.println("方式1 =========local.ip:" + environment.getProperty("local.ip"));
            System.out.println("方式2 =========local.port:" + localPort);
        }
    
    }
    
    结果打印:

    3.2、配置文件中变量的引用获取

    1、配置文件添加

    name = springboot
    app.name= this is ${name}
    

    2、引用输出

    @Component
    public class UserConfig {
    
        @Value("${local.port}")
        private String localPort;
    
        @Autowired
        private Environment environment;
    
        /**
         * 配置文件信息打印
         */
        public void show(){
            System.out.println("方式1 local.ip:" + environment.getProperty("local.ip"));
            System.out.println("方式2 local.port:" + localPort);
            System.out.println("======================================================");
    
            System.out.println("name: " + environment.getProperty("name"));
            System.out.println("app.name: " + environment.getProperty("app.name"));
    
        }
    
    }
    
    结果打印:

    3.3 配置文件默认值配置

    @Value 默认必须要有配置,配置项可以为空,如果没有配置项,则可以给默认值。

    情况如下:

    @Component
    public class UserConfig {
    
        @Value("${local.port}")
        private String localPort;
        /**
         * @Value 默认必须要有配置,配置项可以为空,如果没有配置项,则可以给默认值
         */
        @Value("${tomcat.port:9090}")
        private String tomcatPort;
    
        @Autowired
        private Environment environment;
    
        /**
         * 配置文件信息打印
         */
        public void show(){
            System.out.println("方式1 local.ip:" + environment.getProperty("local.ip"));
            System.out.println("方式2 local.port:" + localPort);
            System.out.println("======================================================");
    
            System.out.println("name: " + environment.getProperty("name"));
            System.out.println("app.name: " + environment.getProperty("app.name"));
    
            System.out.println("======================================================");
            System.out.println("tomcatPort 默认值输出:" + tomcatPort);
    
    
        }
    
    }
    

    1、配置文件配置了

    tomcat.port
    

    但是不给值

    输出为空

    输出空
    2、配置文件里面 删除 tomcat.port
    给上默认值
    @Value("${tomcat.port:9090}")
        private String tomcatPort;
    
    则输出默认值: 输出默认值

    3.4 配置文件的位置

    1、项目的resources即一个classpath下的/config包
    2、项目的resources即classpath根路径(root)
    3、file :/
    4、file :config /

    详情见SpringBoot配置文件——加载顺序

    3.5 引入外部文件

    方式一:启动参数配置
    1、默认的配置文件名字可以使用
    --spring.config.name 来指定只需要指定文件的名字,扩展名可忽略
    2、默认的配置文件路径可以使用
    --spring.config.location 来指定,配置文件需要指定全路径,包括目录和文件的名字,还可以指定多个配置文件,用逗号隔开
    方式二:注解开发
    @Configuration
    @PropertySource("classpath:jdbc.properties")
    @PropertySources

    image.png

    配置文件中的配置项放入类中加载
    @ConfigurationProperties(prefix="ds",locations="")

    3.7 配置文件注入集合、数组
    六、动态的引入配置文件

    通过自己的逻辑随意的增加些读取些配置

    七、配置文件动态处理、集中化管理,springboot已有

    任意的读取配置,加入自己的逻辑
    集中处理配置文件

    八、springboot profile

    application.properties
    编程的方式指定


    相关文章

      网友评论

        本文标题:SpringBoot 配置分析(一)

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