方式一、使用yaml文件对bean进行注入

案例:

(先来两个实体类做为案例测试用)

Car类


@Component
public class Car {String name;String pinpai;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPinpai() {return pinpai;}public void setPinpai(String pinpai) {this.pinpai = pinpai;}public Car(String name, String pinpai) {this.name = name;this.pinpai = pinpai;}public Car() {}@Overridepublic String toString() {return "Car{" +"name='" + name + '\'' +", pinpai='" + pinpai + '\'' +'}';}
}

Person类

//此注解通过application.yaml里的person来注入参数

@ConfigurationProperties(prefix = "person")

@Component
@ConfigurationProperties(prefix = "person") //通过application.yaml里的person来注入参数
public class Person {String name;String age;String idcard;Map map;List list;Car car;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 getIdcard() {return idcard;}public void setIdcard(String idcard) {this.idcard = idcard;}public Map getMap() {return map;}public void setMap(Map map) {this.map = map;}public List getList() {return list;}public void setList(List list) {this.list = list;}public Car getCar() {return car;}public void setCar(Car car) {this.car = car;}public Person(String name, String age, String idcard, Map map, List list, Car car) {this.name = name;this.age = age;this.idcard = idcard;this.map = map;this.list = list;this.car = car;}public Person() {}@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +", age='" + age + '\'' +", idcard='" + idcard + '\'' +", map=" + map +", list=" + list +", car=" + car +'}';}
}

application.yaml里的代码:

(注意一点的是yaml文件必须以application命名才能被springboot识别)

person:name: zhangsanage: 20idcard: 342115454map: {key: 1,key2: 2}list:- java- html- js- csscar:name: 21款小奔奔pinpai: 国产汽车

yaml配置文件严格遵守层级关系,以及冒号后需要有一个空格

yaml文件中对于Map类型的赋值,最为方便的则是{key: value}形式

List类型的赋值 则是可以通过(- 值)的方式类赋值 也可以通过list: [值1,值2,值3]的方式,根据个人喜好选择

yaml文件中的key名必须和封装的实体类对象的属性名一致,否则无法注入

测试输出的信息为:

person{name='zhangsan', age='20', idcard='342115454', map={key=1, key2=2}, list=[java, html, js, css],car=Car{name='21款小奔奔', pinpai='国产汽车'}
}

甚至还能玩的更花样一点:

person:name: zhangsan#在20后面加上随机的int整数age: 20${random.int}#随机生成的long的整数idcard: ${random.long}map: {key: 1,key2: 2}check: 大奔奔汽车list:- java- html- js- csscar:name: 21款小奔奔#判断person中的key名为check的值是否存在,如果存在则注入person.check的值,不存在则注入小奔奔汽车pinpai: ${person.check:小奔奔汽车}

方式二、使用自定义配置文件对bean进行注入

案例:

(还是先来两个实体类做为案例测试用)

Car类

@Component
public class Car1 {String name;String pinpai;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPinpai() {return pinpai;}public void setPinpai(String pinpai) {this.pinpai = pinpai;}public Car1(String name, String pinpai) {this.name = name;this.pinpai = pinpai;}public Car1() {}@Overridepublic String toString() {return "Car{" +"name='" + name + '\'' +", pinpai='" + pinpai + '\'' +'}';}
}

Person类:

//javaConfig 绑定配置文件的值
//加载指定路径的配置文件  myconfig.properties
@PropertySource(value = "classpath:myconfig.properties")

再通过@Value("${key名}")来注入 ,key名则是配置文件中的key

@Component
//javaConfig 绑定配置文件的值
//加载指定配置文件
@PropertySource(value = "classpath:myconfig.properties")
public class Person1 {//SPEL表达式取出值@Value("${name}")String name;String age;String idcard;Map map;List list;Car1 car1;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 getIdcard() {return idcard;}public void setIdcard(String idcard) {this.idcard = idcard;}public Map getMap() {return map;}public void setMap(Map map) {this.map = map;}public List getList() {return list;}public void setList(List list) {this.list = list;}public Car1 getCar() {return car1;}public void setCar(Car1 car1) {this.car1 = car1;}public Person1(String name, String age, String idcard, Map map, List list, Car1 car1) {this.name = name;this.age = age;this.idcard = idcard;this.map = map;this.list = list;this.car1 = car1;}public Person1() {}@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +", age='" + age + '\'' +", idcard='" + idcard + '\'' +", map=" + map +", list=" + list +", car=" + car1 +'}';}
}

自定义配置文件myconfig.properties的代码:

只做其中两个参数的案例

name=zhangsan
age=22

测试输出的信息为:

Person{name='zhangsan', age='22', idcard='null', map=null, list=null, car=null}

SpringBoot 基于配置文件给bean赋值相关推荐

  1. SpringBoot - yml与properties配置文件及bean赋值

    SpringBoot - yml与properties配置文件及bean赋值 ① SpringBoot的配置文件 SpringBoot使用一个全局的配置文件,配置文件名是固定的 : applicati ...

  2. 通过Spring配置文件中bean中的property赋值

    基本数据类型赋值-通过spring配置文件中bean中的property 扩展-以此方式可以通过配置为连接数据的属性赋值 1.如果是基本数据类型,可以通过setter方法为对象中的属性设置初始值,应用 ...

  3. SpringBoot 中的各种配置文件及配置文件转 Bean

    1.SpringBoot 基本 pom.xml 配置 <?xml version="1.0" encoding="UTF-8"?> <proj ...

  4. Spring基于XML装配Bean

    Bean 的装配可以理解为依赖关系注入,Bean 的装配方式也就是 Bean 的依赖注入方式.Spring 容器支持多种形式的 Bean 的装配方式,如基于 XML 的 Bean 装配.基于 Anno ...

  5. @autowired注解原理_Spring框架第二谈:IOC,xml配置文件给属性赋值,注解实现赋值...

    在spring的对象文件中,给Java对象的属性赋值: di依赖注入,表示创建对象,给属性赋值di的实现方法有两种:1.在spring的配置文件中,使用标签完成,叫做基于XML的di实现2.使用spr ...

  6. Spring-IOC—基于XML配置Bean

    Spring-IOC-基于XML配置Bean 1.Spring 配置/管理 bean 介绍 1.Bean 管理包括两方面 1.创建bean对象 2.给bean注入属性 2.Bean配置方式 1.基于x ...

  7. Spring Ioc容器,基于xml的bean管理

    IOC容器 IOC思想基于IOC容器,IOC容器底层就是对象工厂 IOC底层 通过控制反转,使用xml配置文件和反射机制实现对对象的创建 IOC接口 实现IOC容器的两种方式 (1)BeanFacto ...

  8. 你只知道@Value?设置server.port就能定义端口号是如何实现的?springboot读取配置文件的多种方式以及源码解析

    你只知道@Value?设置server.port就能定义端口号是如何实现的?springboot读取配置文件的多种方式以及原理解析 一.SpringBoot全局配置文件优先级 二.属性注入常用注解 1 ...

  9. 一文了解SpringBoot的配置文件

    本专栏将从基础开始,循序渐进,以实战为线索,逐步深入SpringBoot相关知识相关知识,打造完整的云原生学习步骤,提升工程化编码能力和思维能力,写出高质量代码.希望大家都能够从中有所收获,也请大家多 ...

最新文章

  1. ISP 【一】————boost标准库使用——批量读取保存文件 /boost第三方库的使用及其cmake添加,图像gramma
  2. 获取手机上的相关参数方法
  3. Flex/Silverlight的技术比较
  4. ARC079F - Namori Grundy(构造,基环树)
  5. 信息学奥赛一本通 1090:含k个3的数 | OpenJudge NOI 1.5 30
  6. 一键安装zabbix percona mysql插件监控mysql
  7. WebRequestDataBinder实现将请求参数映射为POJO对象
  8. Oracle 安装报错 [INS-06101] IP address of localhost could not be determined 解决方法[转]
  9. ps清理原始数据程序_ps重要插件ACR最新版 让处理照片更简便 详尽说明附上 抓紧下载吧...
  10. php小算法总结一(数组重排,进制转换,二分查找)
  11. Unity toLua加载lua的流程
  12. iOS 基础 第五天(0811)
  13. 打印快递面单pdf_如何开通使用拼多多电子面单?
  14. 群晖系统服务器设置,私人云搭建 篇二:群晖系统搭建和初步设置的不正确指北...
  15. mina框架详解(一)
  16. 《系统工程理论与实践》Latex 模板使用教程
  17. 〖大前端 - 基础入门三大核心之CSS篇④〗- CSS选择器之元素关系选择器、序号选择器与属性选择器
  18. 如何搭建动态IP池?手把手教你3种方法!
  19. vb.net 教程 5-9 屏幕范围内取色
  20. echarts地图随意绘制点

热门文章

  1. python自动发邮件报554错误_python3 使用smtplib发送邮件错误554
  2. 汇编语言程序的调试与运行
  3. 如何更新深度linux系统,深度操作系统 15.4 RC更新详情
  4. 洛古 P1926 小书童——刷题大军
  5. 视频流编码格式(四字符码)对照表
  6. 时间序列分析|基本概念
  7. html5在线客服源码 websocket c# socket 实现,可扩展 im 即时通讯 完整的源代码,在线聊天
  8. PXI/PXIe控制器 4Link架构 16GB带宽 兼容主流PXIe机箱 设计文件!!! 原理图PCB
  9. oracle实现汉字按照拼音、笔画和部首排序
  10. 破解工具ida解决乱码问题