从零开始学springboot-自定义配置

从零开始学spingboot-自定义配置

Spring Boot使用“习惯优于配置”(项目中存在大量的配置,此外还内置了一个习惯性的配置,让你无需手动进行配置)的理念让你的项目快速运行起来。所以,我们要想把Spring Boot玩的溜,就要懂得如何开启各个功能模块的默认配置,这就需要了解Spring Boot的配置文件application.properties。

@Value注解

第一步 application.properties增加配置

application.properties提供自定义属性的支持,这样我们就可以把一些常量配置在这里:

com.csdn.name=烧鸡太子爷
com.csdn.age=32
com.csdn.area=zhejiang

第二步 在类中使用Value注解

通过注解@Value(value=”${config.name}”)就可以绑定到你想要的属性上面

@Component
public class AuthInfo {
    @Value("${com.csdn.name}")
    private String name;
    @Value("${com.csdn.age}")
    private String age;
    @Value("${com.csdn.area}")
    private String area;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

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

    public String getArea() {
        return area;
    }

    public void setArea(String area) {
        this.area = area;
    }
}

第三步 使用配置类

@RestController
@RequestMapping("/userinfo")
public class UserInfoController {

    @Autowired
    AuthInfo auth;

    @RequestMapping("/getauthinfo")
    public AuthInfo getAuthInfo(){
        System.out.println("-----------["+auth.getAge()+"]");
        return auth;
    }
}

第四步 编译运行

在这里插入图片描述

@ConfigurationProperties注解

有时候属性太多了,一个个绑定到属性字段上太累,官方提倡绑定一个对象的bean,顶部需要使用注解@ConfigurationProperties(prefix = “com.csdn”)来指明使用哪个

@Component
@ConfigurationProperties(prefix = "com.csdn")
public class TestConfigInfo {
    private String type;
    private String title;
    private Map<String, String> login;
    private List<String> urls;

    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public Map<String, String> getLogin() {
        return login;
    }
    public void setLogin(Map<String, String> login) {
        this.login = login;
    }
    public List<String> getUrls() {
        return urls;
    }
    public void setUrls(List<String> urls) {
        this.urls = urls;
    }
}

配置文件配置:

com.csdn.type=Springboot - @ConfigurationProperties  
com.csdn.title=configure
#map  
com.csdn.login[username]=admin  
com.csdn.login[password]=123456  
com.csdn.login[callback]=http://www.csdn.net
#list  
com.csdn.urls[0]=https://www.csdn.net/  
com.csdn.urls[1]=https://blog.csdn.net/weixin_43254439
com.csdn.urls[2]=https://blog.csdn.net/weixin_43254439/article/details/93949188
com.csdn.urls[3]=https://blog.csdn.net/weixin_43254439/article/details/93415515
com.csdn.urls[4]=https://blog.csdn.net/weixin_43254439/article/details/92435119

@PropertySource注解

有时候我们不希望把所有配置都放在application.properties里面,这时候我们可以另外定义一个,这里我们取名为test.properties,路径放在src/main/resources的config下面,然后将上面的com.csdn.type等配置放在test.properties下面
在这里插入图片描述

在TestConfigInfo类上增加PropertySource,指定配置文件路径

@Component
@PropertySource(value = "classpath:config/test.properties")
@ConfigurationProperties(prefix = "com.csdn")
public class TestConfigInfo {
    private String type;
    private String title;
    private Map<String, String> login;
    private List<String> urls;

    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public Map<String, String> getLogin() {
        return login;
    }
    public void setLogin(Map<String, String> login) {
        this.login = login;
    }
    public List<String> getUrls() {
        return urls;
    }
    public void setUrls(List<String> urls) {
        this.urls = urls;
    }
}

使用注解类

@RestController
@RequestMapping("/userinfo")
public class UserInfoController {
    @Autowired
    TestConfigInfo testConfig;

    @RequestMapping("/gettestinfo")
    public TestConfigInfo getTestInfo(){
        return testConfig;
    }
}

打包运行
在这里插入图片描述

参数间相互引用

在test.properties下新增两个参数

com.csdn.city=hangzhou
com.csdn.village=beigang

在application.properties里直接引用

com.csdn.name=烧鸡太子爷
com.csdn.age=32
com.csdn.area=zhejiang.${com.csdn.city}.${com.csdn.village}

运行
在这里插入图片描述

源码下载地址:https://download.csdn.net/download/weixin_43254439/11415002
参考网站:http://tengj.top/2017/02/28/springboot2/#自定义属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值