精通SpringBoot——第十一篇:使用自定义配置-阿里云开发者社区

开发者社区> developlee> 正文

精通SpringBoot——第十一篇:使用自定义配置

简介: spring boot 实现自定义配置的几种方式
+关注继续查看

今天这篇文章给大家介绍自定义配置的两种方式
第一式: 使用@ConfigurationProperties,且看代码

package com.developlee.customconfig.config;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.NestedConfigurationProperty;
import org.springframework.context.annotation.Configuration;

/**
 * @author Lensen
 * @desc
 * @since 2018/8/22 12:59
 */
@Configuration
@ConfigurationProperties(prefix = "one-app")
public class OneAppConfig {

    @NestedConfigurationProperty
    public Account account = new Account();

    public String appName;

    public Account getAccount() {
        return account;
    }

    public void setAccount(Account account) {
        this.account = account;
    }

    public String getAppName() {
        return appName;
    }

    public void setAppName(String appName) {
        this.appName = appName;
    }

    public class Account {
        private String username;
        private String password;
        private String age;

        public String getUsername() {
            return username;
        }

        public void setUsername(String username) {
            this.username = username;
        }

        public String getPassword() {
            return password;
        }

        public void setPassword(String password) {
            this.password = password;
        }

        public String getAge() {
            return age;
        }

        public void setAge(String age) {
            this.age = age;
        }
    }
}

很明显,这就是我们要在properties文件中要配置的配置项。
再看第二种方式

/**
 * @author Lensen
 * @desc
 * @since 2018/8/22 13:19
 */
@Configuration
public class TwoAppConfig {
    @Value("${two-app.welcome.message}")
    public String twoAppWelcomeMessage;

    @Value("${two-app.welcome.person}")
    public String twoAppWelcomePerson;

    public String getTwoAppWelcomeMessage() {
        return twoAppWelcomeMessage;
    }

    public void setTwoAppWelcomeMessage(String twoAppWelcomeMessage) {
        this.twoAppWelcomeMessage = twoAppWelcomeMessage;
    }

    public String getTwoAppWelcomePerson() {
        return twoAppWelcomePerson;
    }

    public void setTwoAppWelcomePerson(String twoAppWelcomePerson) {
        this.twoAppWelcomePerson = twoAppWelcomePerson;
    }
}

这个就简单粗暴啦。没有第一种方式结构那么清晰,具体怎么使用,完全取决于项目配置项的关联关系和复杂度,需要大家根据实际情况权衡。
接下来我写了个简单的测试类,来获取我们的配置信息
先看配置文件:

one-app:
  app-name: OneAPP
  account:
    username: Lensen
    password: Orcl
    age: 22

two-app:
  welcome:
    message: welcome to lensen's bolg
    person: LENSEN

一个简单的Controller类

package com.developlee.customconfig.controller;

import com.developlee.customconfig.config.OneAppConfig;
import com.developlee.customconfig.config.TwoAppConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author Lensen
 * @desc
 * @since 2018/8/22 16:40
 */
@RestController
public class AppController {
    @Autowired
    private OneAppConfig oneAppConfig;
    @Autowired
    private TwoAppConfig twoAppConfig;

    @GetMapping("/hello")
    public ResponseEntity getConfig() {
        String str1 = "oneAppConfig: " + oneAppConfig.getAppName() + oneAppConfig.getAccount().getUsername()
                + oneAppConfig.getAccount().getPassword() + oneAppConfig.getAccount().getAge();
        String str2 = "twoAppConfig: " + twoAppConfig.getTwoAppWelcomePerson() + twoAppConfig.getTwoAppWelcomeMessage();
        return new ResponseEntity(str1 +"~~~~~~~"+ str2, HttpStatus.OK);
    }
}

在地址栏输入http:localhost:8080/hello, 回车
image
也可以自己指定文件,只需在类上加上注解@PropertySource注解就好了~~

@Configuration
@PropertySource("classpath:my.properties")
public class ThreeConfig {

    @Value("${my.name}")
    private String myName;

    public String getMyName() {
        return myName;
    }

    public void setMyName(String myName) {
        this.myName = myName;
    }
}

my.properties文件内容:

my.name=developlee

测试结果:
image

如果配置文件是yml格式的,则要使用YamlPropertiesFactoryBean来加载并设置到PropertySourcesPlaceholderConfigurer中

// 加载YML格式自定义配置文件
    @Bean
    public static PropertySourcesPlaceholderConfigurer properties() {
        PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
        YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean();
        yaml.setResources(new FileSystemResource("config.yml"));//File引入
//        yaml.setResources(new ClassPathResource("youryml.yml"));//class引入
        configurer.setProperties(yaml.getObject());
        return configurer;

end...
浮躁的社会,浮躁的人生,唯有代码,宁静致远。(又开始装13了,见谅.....)

最后,以上示例代码可在我的github.com中找到。 我的个人公众号:developlee的潇洒人生。 关注了也不一定更新,更新就不得了了。
qrcode_for_gh_2bd3f44efa21_258

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Spring Boot四:配置文件详解properties
一.配置随机数,使用随机数 在application.properties文件添加配置信息 #32位随机数 woniu.secret=${random.value} #随机整数 woniu.number=${random.
1758 0
Springboot自定义异常处理
1.自定义异常类 import lombok.Data; @Data public class UserException extends RuntimeException { private Long id; public UserException(Long id) { super("user not exist"); this.
1214 0
springboot自定义start解析(start中配置从数据源)
在springboot相比于springmvc提供了一个极为重要的功能,就是自定义start(自定义jar包),同时spring也提供了一大波start。如spring-boot-starter-data-redis,spring-boot-starter-amqp。本文将教你如何自定义start。例子为从start中获取数据源。
16 0
nginx日志格式及自定义日志配置
nginx的log日志分为access log 和 error log 其中access log 记录了哪些用户,哪些页面以及用户浏览器、ip和其他的访问信息 error log 则是记录服务器错误日志 错误日志的形式如下: 10.
806 0
《JavaScript启示录》——1.4 用户自定义/非原生对象构造函数
关于构造函数比较复杂的一点就是this值在函数内部的使用方式。请记住,构造函数只是一个饼干模具,在将它与new关键字一起使用时,它会创建一个拥有构造函数内部定义的属性和值的对象。在使用new关键字时,this值的字面意思是基于构造函数内部的语句创建的新对象/新实例。
1028 0
SpringBoot 实战:自定义 Filter 优雅获取请求参数和响应结果
一个系统上线,肯定会或多或少的存在异常情况。为了更快更好的排雷,记录请求参数和响应结果是非常必要的。所以,Nginx 和 Tomcat 之类的 web 服务器,都提供了访问日志,可以帮助我们记录一些请求信息。
13 0
精通SpringBoot——第十一篇:使用自定义配置
spring boot 实现自定义配置的几种方式
2809 0
spring源码学习之:xml配置文件标签自定义
Spring框架从2.0版本开始,提供了基于Schema风格的XML扩展机制,允许开发者扩展最基本的spring配置文件(一 般是classpath下的spring.xml)。试想一下,如果我们直接在spring.xml中加入一个自定义标签,会发生什么呢?spring框架启动的时候会报错,因为spring根本不认识我们自定义的& lt;mytag>,这样对spring.xml的校验就会失败,最终结果就是框架不能启动。
1558 0
SpringBoot-08-之统一化json输出与自定义异常捕获
为及时了解异常,以及避免返回的json格式不统,将每次请求的结果都返还一样的形式。 此处统一为:{"code":响应代号码,"msg":信息,"data":数据} 具体效果如下: result--format.
1290 0
+关注
developlee
蒹葭苍苍,白露为霜
14
文章
1
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载