目录

理论

例子

解决properties文件编码


理论

@ConfigurationProperties注解是把Person加入到容器中,

<bean>标签也是加入到容器中:

<bean class="Person"><property name="lastName" vale="字面量/${key}从环境变量、配置文件中获取值/#{spEL}"></property>
<bean/>

@Value和@ConfigurationProperties为属性注入值对比

  @ConfigurationProperties @Value
功能 批量注入配置文件中的属性 一一指定
松散绑定(松散语法) 支持 不支持
SpEL 不支持 支持
JSR303数据校验 支持 不支持
复杂类型封装 支持 不支持

配置文件yml还是properties他们都能获取得到值;

@ConfigurationProperties

与@Bean结合为属性的赋值

与@PropertySource(只能用于properties文件)结合读取指定文件

属性名匹配规则(Relaxed binding)

标准写法:person.firstName

大写用-:person.first-name

大写用_:person.first_name

推荐属性:PERSON_FIRST_NAME

例子

项目结构如下:

源码如下:

Dog.java

package com.peoperties.peoperties.bean;public class Dog {private String name;private Integer age;@Overridepublic String toString() {return "Dog{" +"name='" + name + '\'' +", age=" + age +'}';}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}
}

Person.java

package com.peoperties.peoperties.bean;import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;import java.util.Date;
import java.util.List;
import java.util.Map;@Component
@ConfigurationProperties(prefix = "person")
public class Person {//@Value("${person.last-name}")private String lastName;//@Value("#{11*2}")private Integer age;//@Value("true")private Boolean boss;private Date birth;private Map<String, Object> maps;private List<Object> lists;private Dog dog;@Overridepublic String toString() {return "Person{" +"lastName='" + lastName + '\'' +", age=" + age +", boss=" + boss +", birth=" + birth +", maps=" + maps +", lists=" + lists +", dog=" + dog +'}';}public String getLastName() {return lastName;}public void setLastName(String lastName) {this.lastName = lastName;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public Boolean getBoss() {return boss;}public void setBoss(Boolean boss) {this.boss = boss;}public Date getBirth() {return birth;}public void setBirth(Date birth) {this.birth = birth;}public Map<String, Object> getMaps() {return maps;}public void setMaps(Map<String, Object> maps) {this.maps = maps;}public List<Object> getLists() {return lists;}public void setLists(List<Object> lists) {this.lists = lists;}public Dog getDog() {return dog;}public void setDog(Dog dog) {this.dog = dog;}
}

PeopertiesApplication.java

package com.peoperties.peoperties;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class PeopertiesApplication {public static void main(String[] args) {SpringApplication.run(PeopertiesApplication.class, args);}}

application.properties

server.port=8081#配置person的值
person.last-name=李四
person.age=18
person.birth=2019/3/4
person.boss=false
person.maps.k1=v1
person.maps.k2=19
person.lists=a,b,c,d,e,f,g,h
person.dog.name=小白
person.dog.age=15

PeopertiesApplicationTests.java

package com.peoperties.peoperties;import com.peoperties.peoperties.bean.Person;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;@RunWith(SpringRunner.class)
@SpringBootTest
public class PeopertiesApplicationTests {@AutowiredPerson person;@Testpublic void contextLoads() {System.out.println(person);}}

运行截图如下:

解决properties文件编码

Spring Boot读取peoperties配置及@Value和@ConfigurationProperties区别和联系相关推荐

  1. spring boot读取yml配置集合,反射实战!

    一 . 手动从spring中获取bean对象,工具类 package com.meeno.wzq.util;import org.springframework.beans.BeansExceptio ...

  2. Spring Boot的自动化配置原理

    转载自 Spring Boot的自动化配置原理 随着Ruby.Groovy等动态语言的流行,相比较之下Java的开发显得格外笨重.繁多的配置.低下的开发效率.复杂的部署流程以及第三方技术集成难度大等问 ...

  3. 在Spring Boot中使用配置元数据来配置您的配置

    Spring Boot 1.3.0中发布了许多更新,但是其中一个对我很突出,因为我以前并不了解此更新,它的状态使其成为一项真正有用的功能(不幸的是,撰写本文时仅在Spring Boot中可用)这个). ...

  4. 具有Spring Boot和Java配置的Spring Batch教程

    我一直在努力将Podcastpedia.org的一些批处理作业迁移到Spring Batch. 以前,这些工作是以我自己的方式开发的,我认为现在是时候使用一种更"标准化"的方法了. ...

  5. requestmapping配置页面后_第004课:Spring Boot 项目属性配置

    在项目中,很多时候需要用到一些配置的信息,这些信息可能在测试环境和生产环境下会有不同的配置,后面根据实际业务情况有可能还会做修改,针对这种情况,我们不能将这些配置在代码中写死,最好就是写到配置文件中. ...

  6. Spring Boot 2.0 配置图文教程

    摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 本章内容 自定义属性快速入门 外化配置 自动配置 自定义创建 ...

  7. Spring Boot 2.0 配置图文教程 1

    Spring Boot 2.0 配置图文教程 摘要: 原创出处 https://www.bysocket.com 「公众号:泥瓦匠BYSocket 」欢迎关注和转载,保留摘要,谢谢! 本章内容 自定义 ...

  8. Spring Boot 2.0 配置图文教程第 2 章 Spring Boot 配置## 书信息 demo.book.name=[Spring Boot 2.x Core Action] demo.b

    本章内容 1.自定义属性快速入门 2.外化配置 3.自动配置 4.自定义创建 Starter 组件 摘录:读书是读完这些文字还要好好用心去想想,写书也一样,做任何事也一样 第 2 章 Spring B ...

  9. Spring boot读取Excel并存入PG数据库(一)

    Spring boot读取Excel并存入PG数据库(一) 目录 一.前言 二.项目需求 三.数据库表设计 四.代码实现和测试 五.总结 一.前言 进入9月以来,一直忙于项目,特别是临近国庆节这半个月 ...

最新文章

  1. python一个try块后接一个或多个finally块_Python * with *语句是否完全等同于try-(例外)-finally块?...
  2. [密码学] 密钥分发
  3. linux有关网络服务的接口,linux系统有关网络服务接口定义是哪个?
  4. Django项目调用外部程序soffice报错subprocess.CalledProcessError: Command 'soffice --headless --convert-to pdf
  5. 灰度与NFL纽约巨人队达成合作,成为NFL球队首个加密赞助商
  6. java web文件拖拽上传文件_Java实现拖拽文件上传dropzone.js的简单使用示例代码
  7. JavaScript实现在HTML中的粒子文字特效
  8. 关于“击败”团队目标的思考
  9. 404常见的几种错误原因
  10. 微服务启动报错:Shutting down DiscoveryClient
  11. Java写入txt文件内容
  12. M580PLC以太网读通讯和写通讯
  13. 将js预编译熟稔于心
  14. linux检查内存插槽,Linux查看内存大小和插槽
  15. IT痴汉的工作现状30-刀客许三爷(下)
  16. CSS 颜色与度量单位
  17. JavaSE有关String的一些API:charAt、indexOf、length、replaceAll、split、subString、trim、toUpLocase、valueOf......
  18. 微信小程序云开发教程-手把手:获取微信订阅消息的模板ID
  19. The Python IDE for Professional Developers - PyCharm 安装
  20. gtp6 linux 启动_gtp6

热门文章

  1. [gkk传智]static与多态及向下向上转型,及多态调用总结
  2. 深度剖析WinPcap之(九)——数据包的发送过程(8)
  3. 程序员,你还要迷茫多久?
  4. 10 个利用Eclipse调试Java的常见技巧
  5. 这份数十万人浏览,作为企业风向标的BI报告,你一定要看看
  6. 只靠自己的飞鸽传书想象和推断
  7. 调用gserverdkey dll的飞鸽传书2012
  8. 飞鸽类能记住传书的人类
  9. 流和流库[给初学者非常有用]
  10. 用Python增强Excel的3大集成方法及用途