zoukankan      html  css  js  c++  java
  • spring-boot 应用配置文件(.properties或.yml)

    1、应用配置文件(.properties或.yml)

    .properties在配置文件中直接写:

    name=Isea533
    server.port=8080
    

    .yml格式的配置文件如:

    name: Isea533
    server:
    port: 8080
    

    属性配置文件的位置

    spring会从classpath下的/config目录或者classpath的根目录查找application.propertiesapplication.yml

    /config优先于classpath根目录

    2、java中获取配置信息

    @Value(“${xxx}”)

    这种方式是最简单的,通过@Value注解可以将属性值注入进来。

    假如我们要配置一个类别下的多个属性,

    比如mysql的jdbc连接配置

    mysql.jdbcName=com.mysql.jdbc.Driver
    
    mysql.dbUrl=jdbc:mysql://localhost:3306/db_diary
    
    mysql.userName=root
    
    mysql.password=123456

    我们贴到application.properties

    然后按照前面的方案,我们在Controller里写四个属性;

    package com.java1234;
     
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
     
    @RestController
    public class HelloWorldController {
     
        @Value("${helloWorld}")
        private String helloWorld;
         
        @Value("${mysql.jdbcName}")
        private String jdbcName;
         
        @Value("${mysql.dbUrl}")
        private String dbUrl;
         
        @Value("${mysql.userName}")
        private String userName;
         
        @Value("${mysql.password}")
        private String password;
         
        @RequestMapping("/hello")
        public String say(){
            return helloWorld;
        }
         
        @RequestMapping("/showJdbc")
        public String showJdbc(){
            return "mysql.jdbcName:"+jdbcName+"<br/>"
                  +"mysql.dbUrl:"+dbUrl+"<br/>"
                  +"mysql.userName:"+userName+"<br/>"
                  +"mysql.password:"+password;
                   
        }
    }

    @ConfigurationProperties

    Spring Boot 可以方便的将属性注入到一个配置对象中。例如:

    my.name=Isea533
    my.port=8080
    my.servers[0]=dev.bar.com
    my.servers[1]=foo.bar.com

    对应对象:

    @ConfigurationProperties(prefix="my")
    public class Config {
        private String name;
        private Integer port;
        private List<String> servers = new ArrayList<String>();
    
        public String geName(){
            return this.name;
        }
    
        public Integer gePort(){
            return this.port;
        }
        public List<String> getServers() {
            return this.servers;
        }
    }

    Spring Boot 会自动将prefix="my"前缀为my的属性注入进来。

    Spring Boot 会自动转换类型,当使用List的时候需要注意在配置中对List进行初始化!

    Spring Boot 还支持嵌套属性注入,例如:

    name=isea533
    jdbc.username=root
    jdbc.password=root
    ...

    对应的配置类:

    @ConfigurationProperties
    public class Config {
        private String name;
        private Jdbc jdbc;
        class Jdbc {
            private String username;
            private String password;
            //getter...
        }
    
        public Integer gePort(){
            return this.port;
        }
        public Jdbc getJdbc() {
            return this.jdbc;
        }
    }

    jdbc开头的属性都会注入到Jdbc对象中。

    在@Bean方法上使用@ConfigurationProperties

    @ConfigurationProperties(prefix = "foo")
    @Bean
    public FooComponent fooComponent() {
        ...
    }

    Spring Boot 会将foo开头的属性按照名字匹配注入到FooComponent对象中。

    3、属性名匹配规则

    例如有如下配置对象:

    @Component
    @ConfigurationProperties(prefix="person")
    public class ConnectionSettings {
    
        private String firstName;
    
    }

    firstName可以使用的属性名如下:

    1. person.firstName,标准的驼峰式命名
    2. person.first-name,虚线(-)分割方式,推荐在.properties.yml配置文件中使用
    3. PERSON_FIRST_NAME,大写下划线形式,建议在系统环境变量中使用 
  • 相关阅读:
    NameNode热迁移方案
    HDFS QJM的架构设计
    HDFS QJM的架构设计
    HDFS QJM机制分析
    HDFS QJM机制分析
    HDFS inotify:Linux inotify机制在HDFS中的实现
    HDFS inotify:Linux inotify机制在HDFS中的实现
    Confluence 6 数据库整合的方法 1:基本流程
    Confluence 6 数据库整合的限制
    Confluence 6 整合到其他数据库
  • 原文地址:https://www.cnblogs.com/zhizhao/p/8257546.html
Copyright © 2011-2022 走看看