当前位置: 首页 > news >正文

重生之 SpringBoot3 入门保姆级学习(06、属性绑定)

重生之 SpringBoot3 入门保姆级学习(06、属性绑定)

      • 2.3.1 使用 @ConfigurationProperties
      • 2.3.2 使用 @EnableConfigurationProperties

2.3.1 使用 @ConfigurationProperties


  • application.properties 文件书写相关配置
pig.id=1
pig.name=王萍
pig.age=21
  • 方法一:新建 Pig 类属性绑定到 application.properties 的 pig
package com.zhong.boot302demo.bean;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;/*** @ClassName : pig* @Description : 读取配置文件* @Author : zhx* @Date: 2024-05-26 14:39*/
@ConfigurationProperties(prefix = "pig")	// 读取配置信息前缀为 pig 的
@Component	// 注入到容器
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Pig {private Long id;private String name;private Integer age;
}
  • 打印查看结果
package com.zhong.boot302demo;import com.zhong.boot302demo.bean.Pig;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;@SpringBootApplication
public class Boot302DemoApplication {public static void main(String[] args) {var ioc = SpringApplication.run(Boot302DemoApplication.class, args);System.out.println(ioc.getBean(Pig.class));}}
  • 读取配置成功 但是出现乱码

image-20240526144312150

  • 解决方法:

    汉化:找到 编辑器 -> 文件编码 进行修改

    非汉化:搜索 File Encodings 进行修改

image-20240526144810018

  • 修改完后 重新在 application.properties 写入配置

image-20240526145034561

  • 方法二:将 @ConfigurationProperties(prefix = “pig”) 放到方法上 并为方法添加 @Bean 注解使其注入容器

image-20240526145413688

2.3.2 使用 @EnableConfigurationProperties


  • application.properties 文件书写相关配置
sheep.id=2
sheep.name=钟宏雄
sheep.age=23
  • 新建 Sheep 类并指定读取 application.properties 文件中 sheep 属性
package com.zhong.boot302demo.bean;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.boot.context.properties.ConfigurationProperties;/*** @ClassName : Sheep* @Description :* @Author : zhx* @Date: 2024-05-26 14:59*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ConfigurationProperties(prefix = "sheep")
public class Sheep {private Long id;private String name;private Integer age;
}
  • 新增 config 注解 @EnableConfigurationProperties(Sheep.class)
package com.zhong.boot302demo.config;import com.zhong.boot302demo.bean.Pig;
import com.zhong.boot302demo.bean.Sheep;
import com.zhong.boot302demo.bean.User;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Scope;/*** @ClassName : AppConfig* @Description : 配置类* @Author : zhx* @Date: 2024-05-23 12:55*//*** EnableConfigurationProperties(Sheep.class)* 1、开启 Sheep 组件的属性绑定* 2、默认会把这个组件自己放到容器中* 3、一般用于导入第三方写好的组件进行数据绑定* 注意: SpringBoot 默认只扫描自己主程序所在的包。如果导入第三方包,*      即使组件上标注了 @Component、@ConfigurationProperties 注解*      也没用,因为组件都扫描不进来。*/
@EnableConfigurationProperties(Sheep.class)
@Configuration
public class AppConfig {/*** 1、组件默认单实例的* 2、通过 @Scope("prototype") 修改为多实例* @return user*/@Scope("prototype")@Bean   // 替代以前的 ioc.xml 方式配置 Bean。组件在容器中的名字是方法名。可以直接修改默认值 @Bean("user01")public User user() {User user = new User();user.setId("1");user.setName("张三");return user;}@ConfigurationProperties(prefix = "pig")@Beanpublic Pig pig() {return new Pig();}
}
  • 新增输入语句 测试是否生效
package com.zhong.boot302demo;import com.zhong.boot302demo.bean.Pig;
import com.zhong.boot302demo.bean.Sheep;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;@SpringBootApplication
public class Boot302DemoApplication {public static void main(String[] args) {var ioc = SpringApplication.run(Boot302DemoApplication.class, args);System.out.println(ioc.getBean(Pig.class));System.out.println(ioc.getBean(Sheep.class));}
}
  • 成功绑定属性

image-20240526151053433

相关文章:

  • c语言如何向文件写入字符串
  • PTA 判断两个矩阵相等
  • 【白盒测试】单元测试的理论基础及用例设计技术(6种)详解
  • ubuntu下交叉编译安卓FFmpeg 和 官方指导链接
  • Python筑基之旅专栏(导航)
  • 【MySQL精通之路】InnoDB(6)-磁盘结构
  • LeetCode题练习与总结:将有序数组转换为二叉搜索树--108
  • YoloV9改进策略:卷积篇|使用PConv替换YoloV8中的卷积|即插即用,简单高效
  • 【MySQL精通之路】InnoDB(18)-备份与恢复
  • DOS学习-目录与文件应用操作经典案例-ren
  • Python小游戏——俄罗斯方块
  • 蓝桥杯第18489题——拔苗助长(质数+map)
  • 修改元组元素
  • NIO的ByteBuffer和Netty的ByteBuf的性能
  • 服务器数据恢复—服务器raid常见故障表现原因解决方案
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • JavaScript标准库系列——Math对象和Date对象(二)
  • java概述
  • Java精华积累:初学者都应该搞懂的问题
  • JS实现简单的MVC模式开发小游戏
  • js作用域和this的理解
  • October CMS - 快速入门 9 Images And Galleries
  • rabbitmq延迟消息示例
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • vuex 学习笔记 01
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 前端相关框架总和
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 小而合理的前端理论:rscss和rsjs
  • 智能合约Solidity教程-事件和日志(一)
  • # linux 中使用 visudo 命令,怎么保存退出?
  • # Swust 12th acm 邀请赛# [ K ] 三角形判定 [题解]
  • #1015 : KMP算法
  • #NOIP 2014# day.2 T2 寻找道路
  • #前后端分离# 头条发布系统
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • #预处理和函数的对比以及条件编译
  • (1)常见O(n^2)排序算法解析
  • (C++20) consteval立即函数
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (接口自动化)Python3操作MySQL数据库
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • .“空心村”成因分析及解决对策122344
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .Net Core缓存组件(MemoryCache)源码解析
  • .Net的DataSet直接与SQL2005交互
  • .net后端程序发布到nignx上,通过nginx访问
  • .NET轻量级ORM组件Dapper葵花宝典
  • .Net转前端开发-启航篇,如何定制博客园主题