【SpringBoot】SpringBoot核心-外部配置(2)

简介: 【SpringBoot】SpringBoot核心-外部配置(2)

类型安全的配置


上面我们使用@Value注入每个配置,但是在实际项目中会显得格外麻烦,因为我们的配置通常会是许多个,若使用上例的方式则要使用@Value注入很多次。


Spring Boot 还提供了基于类型安全的配置方式,通过@ConfigurationProperties将properties属性和一个Bean及其属性关联,从而实现类型安全配置。


实战


我们在上面的例子上修改。


1、添加配置,即在application.properties上添加:


author.name=chx
author.age=20


当然,如果你不想在这个properties中配置属性,也可以自己新建一个properties文件,这就需要我们在@ConfigurationProperties的属性locations里指定properties的位置,且需要在入口类上配置。

2、类型安全的Bean

package cn.hncu.model;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
 * Created with IntelliJ IDEA.
 * User: 陈浩翔.
 * Date: 2017/2/18.
 * Time: 下午 4:52.
 * Explain:类型安全的Bean
 */
@Component
@ConfigurationProperties(prefix = "author")
//通过locations指定properties文件的位置,这里是在application.properties文件中,可以不指定
public class AuthorSettings {
    private String name;
    private Long age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Long getAge() {
        return age;
    }
    public void setAge(Long age) {
        this.age = age;
    }
}


通过@ConfigurationProperties加载properties文件内的配置,通过prefix属性指定properties的配置的前缀,通过locations指定properties文件的位置。


如果不是在application.properties文件中,则需要配置locations。例如:


@ConfigurationProperties(prefix  = "author",locations = {"classpath:author.properties"})


本例不需要配置locations。


3、检验代码

package cn.hncu;
import cn.hncu.model.AuthorSettings;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * Created with IntelliJ IDEA.
 * User: 陈浩翔.
 * Date: 2017/2/18.
 * Time: 下午 4:59.
 * Explain:检验代码类 - 类型安全的配置
 */
@RestController
public class CheckoutAuthor {
    @Autowired //直接注入该配置
    private AuthorSettings authorSettings;
    @RequestMapping("/author")
    public String index2(){
        return "author name is "+ authorSettings.getName() +" and author age is "+authorSettings.getAge();
    }
}


运行。

访问:http://localhost:10090/helloboot/author

效果如下:

image.png

目录
相关文章
|
XML Java 测试技术
SpringBoot入门篇 01、Springboot入门及配置(二)
SpringBoot入门篇 01、Springboot入门及配置(二)
|
NoSQL 安全 Java
SpringBoot 自动配置的原理|学习笔记
快速学习 SpringBoot 自动配置的原理
139 0
SpringBoot 自动配置的原理|学习笔记
|
Java 容器
SpringBoot2.x基础篇:谈谈SpringBoot内提供的这几种配置绑定
`SpringBoot`在不断地版本迭代中陆续提供了不同的配置参数绑定的方式,我们可以单独获取`一个配置参数`也可以将`一系列的配置`映射绑定到`JavaBean`的属性字段,下面我们来看看这几种方式的配置绑定哪一种是你最常用到的。
SpringBoot2.x基础篇:谈谈SpringBoot内提供的这几种配置绑定
SpringBoot使用@ConstructorBinding注解进行配置属性绑定
`SpringBoot2.2`版本发行后一些新的功能也渐渐的浮出了水面,在之前版本`SpringBoot`的配置文件与类之间的属性绑定(`@ConfigurationProperties`)是通过`Setter`方法来进行绑定对应的配置值,而从`2.2`版本开始支持了`构造函数`的方式进行绑定。
|
XML JSON 开发框架
关于SpringBoot的自动配置和启动过程
关于SpringBoot的自动配置和启动过程
关于SpringBoot的自动配置和启动过程
|
Java 容器
SpringBoot的启动配置原理
介绍SpringBoot的启动配置原理
|
运维 NoSQL 小程序
SpringBoot配置文件加密jasypt【数据库配置加密、redis配置加密、核心参数加密】
SpringBoot配置文件加密jasypt【数据库配置加密、redis配置加密、核心参数加密】
329 0
springboot配置webservice服务发布
springboot配置webservice服务发布
335 0
|
存储 安全 网络协议
springboot 配置ssl 实现https访问
springboot 配置ssl 实现https访问
295 0
springboot 配置ssl 实现https访问
|
Java 应用服务中间件
springboot 中配置最大传输数据或上传文件的大小
springboot 中配置最大传输数据或上传文件的大小
springboot 中配置最大传输数据或上传文件的大小