美文网首页Java技术分享
Spring Boot 入门学习总结(二)之配置文件

Spring Boot 入门学习总结(二)之配置文件

作者: 张少林同学 | 来源:发表于2017-06-18 13:32 被阅读84次
    加油.png

    最近有点忙,Spring Boot 的学习也搁置了一段时间了,今天来继续总结。看这篇之前可以先看看 上一篇 Spring Boot 入门学习总结(一)之工程搭建

    看过之前那篇文章,我们知道 Spring Boot 的优点是"习惯优于配置",一般都是在 pom.xml 中添加对应模块功能的依赖,然后在配置文件里面添加对应功能的配置就能完成相应的功能。也就是在
    resouces 目录下的 application.properties 文件。。几乎所有的配置都是在这个文件里面配置的。

    一、自定义配置属性

    项目中使用到的常量,我们可以在配置文件中设置、在配置文件添加如下配置:

    com.sunnada.name=张少林
    com.sunnada.doSomething=正在学习Spring Boot
    

    写法分析:键值对的形式 key = value。键是为了使用的时候可以通过对应的键拿到对应的 value 值。注意:value 值在配置文件中指定的时候不必要去指定数据类型,数据类型可以在获取的时候去动态定义

    接下来在 Controller 中引用 配置好的常量值,定义全局变量,并添加注解 @Value(value = "${键值}") 表示引用配置好的常量值。

    @RestController//表示以json格式输出数据
    @RequestMapping(value = "/users")// 通过这里配置使下面的映射都在/users下
    public class UserController {
    
        @Value(value = "${com.sunnada.name}")
        private String name;
        @Value(value = "${com.sunnada.dosomething}")
        private String doSomething;
    
        @GetMapping("/doSomething")//表示get请求接口
        public String getDoSomething() {
            return name + doSomething;
        }
    }
    

    用 postman 测试接口 http://127.0.0.1:8080/users/doSomething 发现输出乱码了,google 之后通过设置字符编码解决乱码问题。

    解决IDEA 中读取配置文件中文乱码问题

    在配置文件中添加:

    banner.charset=UTF-8
    server.tomcat.uri-encoding=UTF-8
    spring.http.encoding.charset=UTF-8
    spring.http.encoding.enabled=true
    spring.http.encoding.force=true
    spring.messages.encoding=UTF-8
    

    并且在 Setting 中设置字符编码为 utf-8:

    设置字符编码.png

    再请求接口 返回 "张少林正在学习Spring Boot" 成功引用常量,又解决了字符乱码问题。

    假如我们的需要配置的常量值不止两个,有十个,甚至二十个呢?在 Cntroller 里面需要引用 非常多次值,这样显然难以维护。可以把属性加载到实体 bean 中统一管理 ,最后注入 实体 bean 即可。

    /**
     * Created by 张少林 on 2017/6/17 0017.
     * prefix = "com.sunnada"  在application.properties配置的属性前缀,
     *
     * 在类中的属性就不用使用{@value}进行注入了。
     */
    @ConfigurationProperties(prefix = "com.sunnada")
    public class UserConfig {
    
        private String name;
        private String doSomething;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getDoSomething() {
            return doSomething;
        }
    
        public void setDoSomething(String doSomething) {
            this.doSomething = doSomething;
        }
    
        @Override
        public String toString() {
            return "UserConfig{" +
                    "name='" + name + '\'' +
                    ", doSomething='" + doSomething + '\'' +
                    '}';
        }
    }
    

    在启动类中加入:
    @EnableConfigurationProperties({UserConfig.class}) 指明要加载哪个bean。

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

    最后在 Controller 中注入实体 bean 使用

        @Autowired
        UserConfig userConfig;
    
        @GetMapping("/doSomething")
        public String getDoSomething() {
            return userConfig.getName() + userConfig.getDoSomething();
        }
    

    这样访问接口的接口是一样的,但是 简洁明了,易于维护

    二、参数间引用

    在application.properties中的各个参数之间也可以直接引用来使用,就像下面的

    com.sunnada.name=张少林
    com.sunnada.doSomething=正在学习Spring Boot
    com.sunnada.whoToDo=${com.sunnada.name}现在${com.sunnada.doSomething}
    

    三、随机值配置

    在一些情况下,有些参数我们需要希望它不是一个固定的值,比如密钥、服务端口等。Spring Boot的属性配置文件中可以通过${random}来产生int值、long值或者string字符串,来支持属性的随机值。

    com.sunnada.secret=${random.value}
    com.sunnada.number=${random.int}
    com.sunnada.bignumber=${random.long}
    com.sunnada.uuid=${random.uuid}
    com.sunnada.number.less.than.ten=${random.int(10)}
    com.sunnada.number.in.range=${random.int[1024,65536]}
    

    常见的样板设置在官网可以查看:
    http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html

    参考链接:

    更多原创文章会在公众号第一时间推送,欢迎扫码关注 张少林同学

    张少林同学.jpg

    相关文章

      网友评论

        本文标题:Spring Boot 入门学习总结(二)之配置文件

        本文链接:https://www.haomeiwen.com/subject/kugvqxtx.html