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

springboot给类进行赋初值的四种方式

目录

  • 1. 使用@Value和@ConfigurationProperties
  • 2. 使用@PropertySource
      • 创建Person.java
      • 写一个测试类
  • 3. 使用@ImportResource
    • Student类
    • 创建beans.xml
    • 在主类中引入
    • 测试
  • 其他
  • 心得

1. 使用@Value和@ConfigurationProperties

这里不加赘述了,前面我也发过,这里就放个链接吧
@Value获取值和@ConfigurationProperties获取值用法及比较(springboot)

2. 使用@PropertySource

创建Person.java

package com.example.springbootdaily2.model;import org.springframework.format.annotation.DateTimeFormat;import java.util.Date;
import java.util.List;
import java.util.Map;@Component
@PropertySource(value = "classpath:person.properties")
// 这个是前缀的意思
@ConfigurationProperties(prefix = "person2")
public class PersonX {private String name;private Character sex;@DateTimeFormat(pattern = "YYYY-MM-SS")private Date birthday;private Integer age;private String address;private Map<String, Integer> maps;private List<String> lists;private Dog dog;public String getName() {return name;}public void setName(String name) {this.name = name;}public Character getSex() {return sex;}public void setSex(Character sex) {this.sex = sex;}public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public Dog getDog() {return dog;}public void setDog(Dog dog) {this.dog = dog;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public Map<String, Integer> getMaps() {return maps;}public void setMaps(Map<String, Integer> maps) {this.maps = maps;}public List<String> getLists() {return lists;}public void setLists(List<String> lists) {this.lists = lists;}@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +", sex=" + sex +", birthday=" + birthday +", age=" + age +", address='" + address + '\'' +", maps=" + maps +", lists=" + lists +", dog=" + dog +'}';}
}

创建person.properties

person2.name="李四"
person2.sex=男
person2.birthday=2022-02-07
person2.age=18
person2.maps.keys1=16
person2.maps.keys2=16
person2.lists=[12,24,57]
person2.address="保定廉耻"
person2.dog.name=${random.value}

写一个测试类

package com.example.springbootdaily;
import com.example.springbootdaily.model.Dog;
import com.example.springbootdaily.model.Person;
import com.example.springbootdaily.model.Person2;
import com.example.springbootdaily.model.PersonX;
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 SpringTest {@AutowiredPersonX personX;@Testpublic void print4(){System.out.println(personX);}
}

输出结果:

Person{name='"岳轩子"', sex=M, 
birthday=Sun Dec 26 00:00:00 CST 2021, age=18, 
address='"保定武汉"', maps={keys2=16, keys1=16}, lists=[[12, 24, 57]], 
dog=Dog{name='cdab390f55c9f8a6bbb420cd15607add'}}

注:如果显示乱码,设置文件编码为utf-8
在这里插入图片描述

3. 使用@ImportResource

Student类

package com.example.springbootdaily.model;public class Student {private String name;private Integer 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;}@Overridepublic String toString() {return "Student{" +"name='" + name + '\'' +", age=" + age +'}';}
}

创建beans.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="student" class="com.example.springbootdaily.model.Student"><property name="name" value="李四"/><property name="age" value="18"/></bean>
</beans>

在主类中引入

package com.example.springbootdaily;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ImportResource;@SpringBootApplication
@ImportResource(locations = "classpath:beans.xml")
public class SpringbootDailyApplication {public static void main(String[] args) {SpringApplication.run(SpringbootDailyApplication.class, args);}}

测试

package com.example.springbootdaily;import com.example.springbootdaily.model.*;
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 SpringTest {@AutowiredStudent student;@Testpublic void print5(){System.out.println(student);}
}

运行结果:

Student{name='李四', age=18}

其他

我们可以导入配置文件处理器,以后编写配置就有提示了
<!‐‐导入配置文件处理器,配置文件进行绑定就会有提示‐‐>
依赖:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring‐boot‐configuration‐processor</artifactId><optional>true</optional>
</dependency>

心得

平常还是要多多总结的。
在这里插入图片描述
谢谢大家支持!!!!

相关文章:

springboot给类进行赋初值的四种方式

目录 1. 使用Value和ConfigurationProperties2. 使用PropertySource创建Person.java写一个测试类 3. 使用ImportResourceStudent类创建beans.xml在主类中引入测试 其他心得 1. 使用Value和ConfigurationProperties 这里不加赘述了&#xff0c;前面我也发过&#xff0c;这里就放…...

Day32 | 1049. 最后一块石头的重量 II 494. 目标和 474.一和零

语言 Java 1049. 最后一块石头的重量 II 最后一块石头的重量 II 题目 有一堆石头&#xff0c;用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合&#xff0c;从中选出任意两块石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和 …...

linux 查看一个端口是否被占用

1 linux命令 要在Linux中查看一个端口是否被占用&#xff0c;可以按照以下步骤进行操作&#xff1a; 打开终端&#xff08;Terminal&#xff09;。 运行以下命令来列出系统上所有正在监听的端口及其对应的进程&#xff1a; sudo netstat -tuln | grep LISTEN这将显示所有正在…...

【Git】5. 配置 Git

配置.gitignore – 忽略特殊⽂件 在⽇常开发中&#xff0c;我们有些⽂件不想或者不应该提交到远端&#xff0c;⽐如保存了数据库密码的配置⽂件&#xff0c;那怎么让 Git 知道呢&#xff1f; 在 Git ⼯作区的根⽬录下创建⼀个特殊的 .gitignore ⽂件&#xff0c;然后把要忽略的…...

C语言:文件处理

文件处理 一、文件的类型&#xff08;一&#xff09;文本文件和二进制文件 &#xff08;二&#xff09;程序文件和数据文件数据文件按照二进制储存 二、文件的打开和关闭&#xff08;一&#xff09;文件指针&#xff08;二&#xff09;文件的打开和关闭1、fopen2、fclose &…...

SpringBoot MybatisPlus selectOne的坑

目录 一、问题 二、问题解决 三、其他方法 一、问题 selectOne在查询多条数据时会报错&#xff0c;查询语句并不会加 limit 1。 One record is expected, but the query result is multiple records。 二、问题解决 在QueryWrapper上添加如下&#xff1a; QueryWrapper&…...

Spring源码-ClassPathXmlApplicationContext的refresh()都做了什么?

AbstractApplicationContext的refresh方法 /*** 用给定的父类创建一个新的ClassPathXmlApplicationContext* Create a new ClassPathXmlApplicationContext with the given parent,* 从给定的XML文件加载定义* loading the definitions from the given XML files.* param confi…...

网站加密和混淆技术简介

我们在爬取网站的时候&#xff0c;会遇到一些需要分析接口或 URL 信息的情况&#xff0c;这时会有各种各样类似加密的情况 1. 某个网站的URL 带有一些看不懂的长串加密字符&#xff0c;要抓取就必须懂的这些参数是怎么构造的&#xff0c;否则我们连完整的 URL 都构造不出来&am…...

Kafka + Kraft 集群搭建教程,附详细配置及自动化安装脚本

本文主要介绍 kafka kraft 搭建过程&#xff0c;主要用途是为了日志采集&#xff0c;所以搭建相对比较简单暴力&#xff0c;不过也可以作为一个参考供大家学习&#xff0c;主打一个能用管跑&#xff08;调优啊&#xff0c;参数解释啊&#xff0c;原理啊&#xff0c;太枯燥了&a…...

“Apple Intelligence”的“系统提示词”被曝光了

当 苹果的 Apple Intelligence 还未完全开放体验时&#xff0c;其提示词就已经曝光了。 苹果如何指挥 AI 干活&#xff0c;这次被泄露的非常彻底。我们就拿邮件来说&#xff0c;借助 AI&#xff0c;收发及回复邮件变得非常简单&#xff0c;但背后的逻辑是内置提示词在拿捏。 比…...

django学习-数据表操作

一、数据表操作 1. 数据新增 由模型实例化对象调用内置方法实现数据新增&#xff0c;比如单数据新增调用create&#xff0c;查询与新增调用get_or_create&#xff0c;修改与新增调用update_or_create&#xff0c;批量新增调用bulk_create。 1.1 create() # 方法一 # 使用cr…...

机器学习-决策树

决策树 决策树1. 简介2. ID3 决策树3. C4.5决策树4. CART决策树5. 决策树对比6. 正则化 剪枝 决策树 1. 简介 """ 简介一种树形结构树中每个内部节点表示一个特征的判断每个分支代表一个判断结果的输出每个叶节点代表一种分类结果建立过程1. 特征选择选取有较…...

opencascade TopoDS_Shape源码学习【重中之重】

opencascade TopoDS_Shape 前言 描述了一个形状&#xff0c;它 引用了一个基础形状&#xff0c;该基础形状有可能被赋予一个位置和方向 为基础形状提供了一个位置&#xff0c;定义了它在本地坐标系中的位置为基础形状提供了一个方向&#xff0c;这是从几何学的角度&#xff…...

Self-study Python Fish-C Note15 P52to53

函数 (part 5) 本节主要讲函数文档、类型注释、内省、高阶函数 函数文档、类型注释、内省 (P52) 函数文档 函数是一种代码封装的方法&#xff0c;对于一个程序来说&#xff0c;函数就是一个结构组件。在函数的外部是不需要关心函数内部的执行细节的&#xff0c;更需要关注的…...

Java小白入门到实战应用教程-异常处理

Java小白入门到实战应用教程-异常处理 前言 我们这一章节进入到异常处理知识点的学习。异常是指程序在运行时遇到的一种特殊情况&#xff0c;它能打断了正常的程序执行流程。 而异常处理是一项至关重要的技术&#xff0c;它使得程序能够优雅地处理运行时错误&#xff0c;避免…...

使用Anaconda安装多个版本的Python并与Pycharm进行对接

1、参考链接 Anaconda安装使用教程解决多Python版本问题_anaconda安装多个python版本-CSDN博客 基于上面的一篇博客的提示&#xff0c;我做了尝试。并在Pycharm的对接上做了拓展。 2、首先安装Anaconda 这个比较简单&#xff0c;直接安装即可&#xff1a; 3、设置conda.exe的…...

android系统中data下的xml乱码无法查看问题剖析及解决方法

背景&#xff1a; Android12高版本以后系统生成的很多data路径下的xml都变成了二进制类型&#xff0c;根本没办法看xml的内容具体如下&#xff1a; 比如想要看当前系统的widget的相关数据 ./system/users/0/appwidgets.xml 以前老版本都是可以直接看的&#xff0c;这些syste…...

​MySQL——索引(三)创建索引(2)使用 CREATE INDEX 语句在已经存在的表上创建索引

若想在一个已经存在的表上创建索引&#xff0c;可以使用 CREATE INDEX.语句&#xff0c;CREATEINDEX语句创建索引的具体语法格式如下所示: CREATE [UNIQUEIFULLTEXTISPATIAL]INDEX 索引名 ON 表名(字段名[(长度)J[ASCIDESC]); 在上述语法格式中&#xff0c;UNIQUE、FULLTEXT 和…...

html+css 实现hover选择按钮

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享htmlcss 绚丽效果&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目…...

Python数据可视化利器:Matplotlib详解

目录 Matplotlib简介安装MatplotlibMatplotlib基本用法 简单绘图子图和布局图形定制 常见图表类型 折线图柱状图散点图直方图饼图 高级图表和功能 3D绘图热图极坐标图 交互和动画与其他库的集成 与Pandas集成与Seaborn集成 常见问题与解决方案总结 Matplotlib简介 Matplotli…...

CLIP-GmP-ViT-L-14入门指南:理解ImageNet/ObjectNet双基准评估意义

CLIP-GmP-ViT-L-14入门指南&#xff1a;理解ImageNet/ObjectNet双基准评估意义 1. 什么是CLIP-GmP-ViT-L-14 CLIP-GmP-ViT-L-14是一个经过几何参数化&#xff08;GmP&#xff09;微调的CLIP模型&#xff0c;在计算机视觉领域具有出色的表现。这个模型最大的特点是它在ImageNe…...

Retinaface+CurricularFace模型部署实战:Windows11环境配置全攻略

RetinafaceCurricularFace模型部署实战&#xff1a;Windows11环境配置全攻略 想在Windows11上快速搭建人脸识别系统却苦于环境配置&#xff1f;本文手把手带你避开所有坑&#xff0c;30分钟完成RetinafaceCurricularFace的完整部署。 1. 环境准备&#xff1a;搞定CUDA和cuDNN …...

Python 日志神器 Loguru 超详细使用教程

前言 在 Python 开发中&#xff0c;日志记录是排查问题、监控程序运行的核心工具&#xff0c;但原生 logging 库配置繁琐、语法复杂&#xff0c;新手很难快速上手。Loguru 是一款极简、强大、开箱即用的第三方日志库&#xff0c;无需复杂配置&#xff0c;一行代码就能实现专业级…...

【面板数据】A股上市公司研发投入数据(2000-2024年)

数据简介&#xff1a;作为评估企业创新能力与可持续发展潜力的关键维度&#xff0c;上市公司研发投入呈现显著的行业差异化特征&#xff0c;但总体保持稳健增长态势。随着信息披露监管要求的持续强化&#xff0c;研发投入透明度已成为提升企业市场信誉的重要抓手。值得注意的是…...

Could NOT find OpenSSL (missing: OPENSSL_LIBRARIES)

手动安装cmake&#xff0c;执行./bootstrap后出现标题所示错误提示&#xff0c;因为这一步出错&#xff0c;所以后面的步骤都无法继续进行 一开始以为是服务器上没有装openssl&#xff0c;使用openssl version命令发现有对应的版本&#xff0c;但是路径下没有include等文件夹 …...

C语言宏定义封装函数参数的工程实践

1. 宏定义封装函数参数的核心价值在嵌入式开发中&#xff0c;我们经常遇到需要传递大量固定参数的场景。以NXP RT1052 SDK中的GPIO配置为例&#xff0c;每个引脚复用配置需要传递6个参数&#xff0c;其中5个都是固定值。这种场景下&#xff0c;宏定义封装技术能显著提升代码的可…...

SpringBoot 自动配置原理与实践

核心机制解析SpringBoot 的自动配置基于条件化装配思想&#xff0c;通过 Conditional 系列注解实现动态加载。spring-boot-autoconfigure 模块包含大量预定义配置类&#xff0c;例如 DataSourceAutoConfiguration 在检测到类路径存在 HikariCP 时自动初始化数据源。关键组件包括…...

基于智能软开关的配电网优化调度分析(含故障恢复能力与分布式电源影响)

基于智能软开关的配电网优化调度matlab 采用matlab编程&#xff0c;分析得到了含智能软开关下的配电网故障恢复能力&#xff0c;包括恢复负荷、失电节点以及节点电压等&#xff0c;程序选择标准ieee33节点系统作为分析对象&#xff0c;采用yalmip编程&#xff0c;运行稳定。 这…...

MPL115A2气压传感器驱动开发与嵌入式I²C实践

1. MPL115A2气压传感器技术解析与嵌入式驱动开发实践MPL115A2是由NXP&#xff08;原Freescale&#xff09;推出的一款高精度、低功耗、IC接口的绝对气压传感器&#xff0c;专为消费电子和工业应用中的海拔高度测量、天气监测及气压补偿等场景设计。该器件采用MEMS压阻式传感原理…...

DSI3协议四大模式(CRM/PDCM/BDM/DM)全解析:从汽车胎压监测到电池管理,看它如何工作

DSI3协议四大模式深度解析&#xff1a;从胎压监测到电池管理的实战应用 汽车电子系统正经历着从分布式架构向集中式控制的转型&#xff0c;而DSI3&#xff08;Distributed System Interface 3&#xff09;协议凭借其独特的单线通信设计&#xff0c;正在成为连接各类车载传感器的…...