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,暂不了解

  • 相关阅读:
    BZOJ-3940:Censoring(AC自动机裸题)
    BZOJ-3881:Divljak (AC自动机+DFS序+树链求并+树状数组)
    CodeForces
    CodeForces 547E:Mike and Friends(AC自动机+DFS序+主席树)
    CodeForces -163E :e-Government (AC自动机+DFS序+树状数组)
    CodeForces
    CodeForces
    BZOJ2726:任务安排(DP+斜率优化+二分)
    bzoj 2049: [Sdoi2008]Cave 洞穴勘测
    [SDOI2009]Bill的挑战
  • 原文地址:https://www.cnblogs.com/psxfd4/p/11975718.html
Copyright © 2011-2022 走看看