java 注解properties文件_注解ConfigurationProperties注入yml配置文件中的数据

在使用SpringBoot开发中需要将一些配置参数放在yml文件中定义,再通过Java类来引入这些配置参数

SpringBoot提供了一些注解来实现这个功能

ConfigurationProperties

Value

EnableConfigurationProperties

下面提供例子来说明如何引入常规变量,数组,List,Map,引用对象。

引入pom

org.springframework.boot

spring-boot-starter

org.springframework.boot

spring-boot-configuration-processor

true

org.projectlombok

lombok

true

注解类

这里定义了一个全局的注解类,

@Data

@ToString

@ConfigurationProperties(prefix= "all")public classAllConfigurationProperties {

//普通变量privateString name;

//引用对象privateOtherProperties other;

//数组privateString[] server;

//listprivateList list;

//mapprivateMap map;

//复杂mapprivate Map modules = newLinkedHashMap();

//复杂listprivate ListmodulesList;

}

ConfigurationProperties:标明者是一个配置类,需要prefix配置yml中的配置前缀。

需要注意几点

1. 配置类中的名称应当符合JavaBean的命名方式

2. 配置类中的名称应当与yml中的相同,否则应使用@Value指定

比如:

yml文件:

all:

name: libai

------------------------------------

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

3. 如果已经使用@Value方式,可不用写Setter方法。否则必须为该变量写Setter方法,这里使用lombok的注解@Data来配置,会自动生成Setter,Getter,ToString方法

上述配置类的引用对象

@Datapublic classModuleConfig {private static final long serialVersionUID = 5508512956753757169L;privateString name;privateString version;privateString owner;

}

@Datapublic classOtherProperties {privateLong id;privateString version;

}

使能配置类

@Slf4j

@EnableConfigurationProperties(AllConfigurationProperties.class)

@Configurationpublic classAutoConfiguration {

@Autowired

AllConfigurationProperties properties;

@PostConstructpublic voidinit(){

System.out.println("properties = " +properties);

}

}

这里使用@EnableConfigurationProperties使能配置类。它会为AllConfigurationProperties注入yml中的配置参数,并创建一个bean,后续可使用@Autowired注入使用

@Configuration注明这是一个SpringBoot的配置类

使用方法init()输出配置.

yml中配置

all:

name: libai

other:

id: 100

version: 1.0.1

server:

- 127.0.0.1

- 127.0.0.2

- 127.0.0.3

list:

- 111

- 222

- 333

map:

key1: value1

key2: value2

key3: value3

modules:

key1:

name: modules-name-1

version: modules-version-1

owner: modules-owner-1

key2:

name: modules-name-2

version: modules-version-2

owner: modules-owner-2

modulesList:

- name: modules-name-3

version: modules-version-3

owner: modules-owner-3

- name: modules-name-4

version: modules-version-4

owner: modules-owner-4

输出

properties =

AllConfigurationProperties(

name=libai,

other=OtherProperties(id=100, version=1.0.1),

server=[127.0.0.1, 127.0.0.2, 127.0.0.3],

list=[111, 222, 333],

map={

key1=value1,

key2=value2,

key3=value3

},

modules={

key1=ModuleConfig(name=modules-name-1, version=modules-version-1, owner=modules-owner-1),

key2=ModuleConfig(name=modules-name-2, version=modules-version-2, owner=modules-owner-2)

},

modulesList=[

ModuleConfig(name=modules-name-3, version=modules-version-3, owner=modules-owner-3),

ModuleConfig(name=modules-name-4, version=modules-version-4, owner=modules-owner-4)

])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值