注解ConfigurationProperties注入yml配置文件中…
2019-04-25 06:56:54来源:博客园 阅读 ()
在使用SpringBoot开发中需要将一些配置参数放在yml文件中定义,再通过Java类来引入这些配置参数
SpringBoot提供了一些注解来实现这个功能
- ConfigurationProperties
- Value
- EnableConfigurationProperties
下面提供例子来说明如何引入常规变量,数组,List,Map,引用对象。
[相关代码-GitHub]
引入pom
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
<!--lombok 插件,非必须 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
注解类
这里定义了一个全局的注解类,
@Data @ToString @ConfigurationProperties(prefix = "all") public class AllConfigurationProperties {
//普通变量 private String name;
//引用对象 private OtherProperties other; //数组 private String[] server; //list private List list; //map private Map map; //复杂map private Map<String, ModuleConfig> modules = new LinkedHashMap(); //复杂list private List<ModuleConfig> modulesList; }
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方法
上述配置类的引用对象
@Data public class ModuleConfig { private static final long serialVersionUID = 5508512956753757169L; private String name; private String version; private String owner; } @Data public class OtherProperties { private Long id; private String version; }
使能配置类
@Slf4j @EnableConfigurationProperties(AllConfigurationProperties.class) @Configuration public class AutoConfiguration { @Autowired AllConfigurationProperties properties; @PostConstruct public void init(){ 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)
])
原文链接:https://www.cnblogs.com/lgjlife/p/10762893.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Java--注解 2020-06-11
- Java 必须掌握的 12 种 Spring 常用注解! 2020-06-08
- Java Spring注入一个接口的多个实现类在map里如何实现?案 2020-06-04
- spring注入map,spring注入一个接口的多个实现类在map里 2020-06-03
- @Resource,@Autowired,@Inject3种注入方式详解 2020-06-01
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash