• Spring Boot属性配置


    1. Spring Boot的默认配置文件application.properties或者appliaction.yml

    2. 自定义属性有多种方法:

    2.1对于引用少数几个属性值,可以直接使用@Value注解直接引用自定义属性值,不需要@Configuration等注解配合.

    application.properties提供自定义属性的支持,这样我们就可以把一些常量配置在这里:

    com.windy.name="windy"
    com.windy.want="祝大家新年好"
    

    然后直接在要使用的地方通过注解@Value(value=”${config.name}”)就可以绑定到你想要的属性上面

     

    @RestController
    public class UserController {
    
        @Value("${com.windy.name}")
        private  String name;
        @Value("${com.windy.want}")
        private  String want;
    
        @RequestMapping("/")
        public String hexo(){
            return name+","+want;
        }
    }
    

    2.2 有时候属性太多,一个个绑定太累,官方提倡绑定一个对象的Bean.

    实现这种方式需要3个步骤:

    这里我们新建一个Java类ConfigBean,并在这个类上加上注解@Configuration(下图少了这个注解) 

    @Configuration
    @ConfigurationProperties(prefix = "com.windy")
    //@PropertySource(classpath:application.properties)
    public class ConfigBean {
        private String name;
        private String want;
     
        // 省略getter和setter
    }
    

      

    还需要在spring Boot入口类加上@EnableConfigurationProperties

    @SpringBootApplication
    @EnableConfigurationProperties()
    public class Chapter2Application {
    
        public static void main(String[] args) {
            SpringApplication.run(Chapter2Application.class, args);
        }
    }
    

    最后在Controller中引入ConfigBean使用即可

    @RestController
    public class UserController {
        @Autowired
        ConfigBean configBean;
    
        @RequestMapping("/")
        public String hexo(){
            return configBean.getName()+configBean.getWant();
        }
    }
    

      

     3. 配置文件的优先级

    application.properties和application.yml文件可以放在以下四个位置:

    • 外置,在相对于应用程序运行目录的/congfig子目录里。
    • 外置,在应用程序运行的目录里
    • 内置,在config包内
    • 内置,在Classpath根目录

    同样,这个列表按照优先级排序,也就是说,src/main/resources/config下application.properties覆盖src/main/resources下application.properties中相同的属性,如图:

    此外,如果你在相同优先级位置同时有application.properties和application.yml,那么application.properties里的属性里面的属性就会覆盖application.yml。

    4. 使用@Profile注解进行配置

    首先定义一个DBConnect的接口

    @Component
    public interface DBConnector {
    
    	public void configure();
    	
    }

    然后分别定义Mysql和Oracle的实现类

    @Component
    @Profile("Mysql")
    public class MysqlConnector implements DBConnector {
    
    	@Override
    	public void configure() {
    		System.out.println("This is Mysql!");
    	}
    
    }
    
    @Component
    @Profile("Oracle")
    public class OracleConnector implements DBConnector {
    
    	@Override
    	public void configure() {
    		System.out.println("This is Oracle!");
    	}
    
    }
    

    在配置文件application.properties中指定使用哪个实现类

    spring.profiles.active=Oracle
    

    然后就可以这么用了

    @RestController
    public class DBContorller {
    	
    	@Autowired
    	DBConnector dbConnector;
    	
    	@RequestMapping("/db")
    	public void dbConnector(){
    		
    		dbConnector.configure(); //最终打印"This is Oracle!"
    		
    	}
    	
    }
    

      

    除了spring.profiles.active来激活一个或者多个profile之外,还可以用spring.profiles.include来叠加profile

    spring.profiles.active: Oracle  
    spring.profiles.include: proddb,prodmq
    

      

  • 相关阅读:
    图数据库的选择与对比(Neo4j)
    pip install ahocorasick报错以及Requirement already satisfied问题
    从知识图谱到认知图谱: 历史、发展与展望
    kafka(一)—— kafka安装简单使用
    python管理docker
    Javaweb前后端分离项目docker部署
    django + uwsgi + nginx部署(前后端不分离)
    坑(八)—— LayUI框架中append新的元素的问题
    docker(三)—— 避免一直输入sudo
    坑(七)—— 表单提交方式
  • 原文地址:https://www.cnblogs.com/fengze/p/8320456.html
Copyright © 2020-2023  润新知