zoukankan      html  css  js  c++  java
  • Spring Boot 中读取配置属性

    1.@Value

    数组属性在配置文件中用逗号隔开,需要注意的一点:在spring框架中controller层获取属性需要在spring和springmvc的配置文件中都添加属性文件引用,不然启动时无法读取属性文件。而在springboot直接配置属性就可在controller层获取。

    2.Environment

    通过注入获取Environment对象,然后再获取定义在配置文件的属性值;或者通过ApplicationContext获取Environment对象后再获取值

    @RestController
    public class ConfigureController extends BaseController{
        private static final String MINE_HELLO="mine.hello";
        private static final String MINE_INT_ARRAY="mine.int-array";
        @Resource
        private Environment env;
        @RequestMapping("config")
        public void config(){
            String a=applicationContext.getEnvironment().getProperty(MINE_HELLO);
            String c=applicationContext.getEnvironment().getProperty(MINE_INT_ARRAY);
            System.out.println(a);
            System.out.println(c);
        }
        @RequestMapping("envir")
        public void envir(){
            String a=env.getProperty(MINE_HELLO);
            String c=env.getProperty(MINE_INT_ARRAY);
            System.out.println(a);
            System.out.println(c);
        }
    }

    这里BaseController中注入了一个ConfigurableApplicationContext对象。获取的属性均为String类型

    3.@ConfigurationProperties

    @ConfigurationProperties作用在类上,用于注入Bean属性,然后再通过当前Bean获取注入值

    @RestController
    
    public class PropertiesController {
        @Autowired
        private Attribute attribute;
        @RequestMapping("property")
        public void property(){
            System.out.println(attribute.getHello());
            System.out.println(Arrays.toString(attribute.getIntArray()));
        }
    }
    @Component
    //@PropertySource("classpath:application.yaml")
    @ConfigurationProperties(prefix = "mine")
    class Attribute{
        private String hello;
        private Integer[] intArray;
    
        public void setHello(String hello) {
            this.hello = hello;
        }
    
        public void setIntArray(Integer[] intArray) {
            this.intArray = intArray;
        }
    
        public String getHello() {
            return hello;
        }
    
        public Integer[] getIntArray() {
            return intArray;
        }
    }

    我的属性名为int-array,在Attribute类中还是可以用驼峰命名法获取属性

    PropertiesLoaderUtils,暂不了解

  • 相关阅读:
    nginx设置开机自启
    sublimeText3和phpstrom使用
    快捷键整理
    nginx日志分割及备份
    nginx日志设置
    nginx上部署PHP
    C语言三种参数传递方式
    浮点数在内存中的存储方式
    windows下git安装过程
    偏移二进制编码和二进制补码的区别
  • 原文地址:https://www.cnblogs.com/psxfd4/p/11975718.html
Copyright © 2011-2022 走看看