• springboot ConfigurationProperties


    springboot可以使用ConfigurationProperties将配置映射为对象,假设有一个服务器列表的配置,服务器拥有ip,端口,名字三个属性,配置文件如下:

    servers.ips[0]=127.0.0.1
    servers.ports[0]=9090
    servers.names[0]=Server1
    servers.ips[1]=127.0.0.2
    servers.ports[1]=9092
    servers.names[1]=Server2

    可以创建映射对象并添加@ConfigurationProperties注解与配置文件相关联

    @ConfigurationProperties("servers")
    public class Servers {
        private List<String> ips;
        private List<Integer> ports;
        private List<String> names;
    
        public void setIps(List<String> ips) {
            if (null != this.ips) {
                return;
            }
            this.ips = ips;
        }
    
        public void setPorts(List<Integer> ports) {
            if (null != this.ports) {
                return;
            }
            this.ports = ports;
        }
    
        public void setNames(List<String> names) {
            if (null != this.names) {
                return;
            }
            this.names = names;
        }
    
        public String getIp(int index) {
            return ips.get(index);
        }
    
        public Integer getPort(int index) {
            return ports.get(index);
        }
    
        public String getName(int index) {
            return names.get(index);
        }
    
        public int count() {
            return ips.size();
        }
    }

    在数据不为空时,不允许set数据,并且不提供getter方法以防止对数据进行修改

    为了使配置映射可以被扫描到,需要在@Configuration所注解的类中,添加@EnableConfigurationProperties(Servers.class),可以直接使用@Autowired引用配置类

    代码示例如下:

    @RestController
    @EnableAutoConfiguration
    @Configuration(proxyBeanMethods = false)
    @EnableConfigurationProperties(Servers.class)
    public class HelloWorld {
    
        @Autowired
        private Servers servers;
    
        @RequestMapping("/")
        String listServers() {
            int count = servers.count();
            StringBuffer sb = new StringBuffer();
            for (int i = 0; i < count; i++) {
                sb
                        .append(servers.getIp(i))
                        .append(" ~ ")
                        .append(servers.getPort(i))
                        .append(" ~ ")
                        .append(servers.getName(i))
                        .append("<br/>");
            }
            return sb.toString();
        }
    
        public static void main(String[] args) {
            SpringApplication app = new SpringApplication(HelloWorld.class);
            app.run(args);
        }
    }

    访问http://localhost:8080/可以看到所有的服务器数据:

    127.0.0.1 ~ 9090 ~ Server1
    127.0.0.2 ~ 9092 ~ Server2
  • 相关阅读:
    css圆角与阴影,[iecss3.htc文件需要下载]
    [纯css下拉菜单]兼容各种IE,但搜狗好像有点问题
    UITabBar的隐藏与显示
    UIScrollView属性总结
    NSTimer 用法小结
    自定义UINavigationController的push和pop切换界面动画
    UIScrollView实现缩放和居中
    UITableView内存警告销毁视图后重新load视图,cell未显示内容
    Select的使用
    FreeType的使用
  • 原文地址:https://www.cnblogs.com/yytxdy/p/12759788.html
Copyright © 2020-2023  润新知