@PropertySource与@ImportResource的区别

news/2024/2/28 1:41:57

目录

前言

@PropertySource

@ImportResource


前言

在SpringBoot中,对于JavaBean的属性一般都绑定在配置文件中,比如application.properties/application.yml/application.yaml,这三个配置文件前面的优先级高于后面的,即对于同名属性,前面的配置会覆盖后面的配置文件。

当我们自己创建类,也想放到容器中,可以单独建立文件,可以通过@PropertySource与@ImportResource这两个注解来注入到Servlet容器中,就可以搞定不在主配置里读取,按照不同的功能模块划分出不同的配置文件。
前者适合yml、yaml格式,而@importResource则适用于xml文件格式,如beans.xml 可以把其注解到窗口中,不过要放在spring boot主配置文件头部

@PropertySource

可以自定义配置文件名称,不在默认配置文件中读取值,多用于额外配置文件与实体属性映射。

在从配置文件里获取值,与JavaBean做映射。存在一个问题,我们是从主配置(application.yml)里读取的。如果全部的配置都写到application里,那么主配置就会显得特别臃肿。为了按照不同模块自定义不同的配置文件引入了@PropertySource

user.name=张三
user.age=24
user.email=xxxxxxx@qq.com
user.address=xx省xx市xx区

JavaBean

@Data
@PropertySource(value = {"classpath:user.properties"})
@ConfigurationProperties(prefix = "user")
@Component
public class Person {private String name;private Integer age;private String email;private String address;
}

 这样一个注解(@PropertySource(value = {“classpath:person.properties”}))就可以搞定不在主配置里读取,按照不同的功能模块划分出不同的配置文件。

@ImportResource

一般情况下我们自定义的xml配置文件,默认情况下这个bean是不会加载到Spring容器中来的。需要@ImportResource注解将这个配置文件加载进来。

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="UserService" class="com.boot.UserService"></bean>
<beans>

JavaBean

public class UserService {}

修改启动类

@SpringBootApplication
@ImportResource(locations = {"classpath:beans.xml"})
public class Springboot02ConfigApplication {public static void main(String[] args) {SpringApplication.run(Springboot02ConfigApplication.class, args);}
}

小结
 @PropertySource 用于引入*.Properties或者 .yml 用于给javabean注入值

一般用在javabean的类名上
@ImportResource 用于引入.xml 类型的配置文件 在spring boot中已经被配置类(@Bean)替代
一般用于启动类上


http://www.ppmy.cn/news/13394.html

相关文章

采用高通Qualcomm处理器的手机进EDL 9008模式的办法

由于我们有很多基于 Qualcomm 的设备&#xff0c;其中一些设备可能会古怪地猜测如何进入 EDL 模式&#xff0c;或者如何正确进入。 例如&#xff0c;对于 Alcatel&#xff0c;您必须先按住两个音量键&#xff0c;然后再按住其中一个&#xff0c;对于 CAT B35&#xff0c;您必须…

基于深度学习方法的车道线检测综述(2022)

目录 一 概述 二、车道线数据集 三、2D车道线检测算法 1、基于语义分割的方法

基于机器学习的上海房价预测

本文主要分析影响房价的因素,数据来源为链家网,机器学习模型的使用中,采用了三种线性模型,一种非线性模型,最后得出的结论是房子的大小,房子的位置,房子的建造年份以及房子的高度对房价影响较大。 问题描述 现在房价居高不下,特别是上海等一线城市,房价更是高的离谱,…

蓝桥杯:城邦

题目链接 问题描述 答案提交 本题答案是&#xff1a;4046。 运行限制 思路分析 代码&#xff08;Java&#xff09; 问题描述 小蓝国是一个水上王国, 有 2021 个城邦, 依次编号 1 到 2021。在任意两 个城邦之间, 都有一座桥直接连接。 为了庆祝小蓝国的传统节日, 小蓝国政府…

【虹科分享】虹科ATEasy软件,您的测试执行和开发专家!

测试和执行专家 虹科ATEasy是功能测试&#xff0c;自动测试系统&#xff0c;数据采集&#xff0c;过程控制和仪表系统的测试执行和快速应用开发框架。虹科ATEasy提供开发&#xff0c;部署和维护软件组件的所有必要工具&#xff0c;包括仪器驱动程序&#xff0c;测试程序&#x…

【年度总结】回看2022,展望2023,做更好的自己

作者主页&#xff1a;Designer 小郑 作者简介&#xff1a;Java全栈软件工程师一枚&#xff0c;来自浙江宁波&#xff0c;负责开发管理公司OA项目&#xff0c;专注软件前后端开发&#xff08;Vue、SpringBoot和微信小程序&#xff09;、系统定制、远程技术指导。CSDN学院、蓝桥云…

【深度学习笔记】CNN在图像上表现好的原因

问题 一提到计算机视觉,第一反应就是 CNN ,但是大家有没有想过,为什么图像识别领域的网络结构都是使用的 CNN 呢,或者说 CNN 网络有哪些特点可以使其在图像识别领域表现良好?这个问题对于我们而言都习惯到理所当然了,所以面试官要是突然问这种问题,估计很多同学都得懵逼…

C/C++飞机订票系统[2023-01-18]

C/C飞机订票系统[2023-01-18] 题目1&#xff1a;飞机订票系统 设计目标: 设计一个飞机订票系统&#xff0c;用C语言实现。对该系统的要求如下: 一、需求描述: 系统角色: 1.售票员售票员能够使用本系统完成基本的票务管理过程、机票销售过程及销售记录统计过程。 票务管理功能…

【C语言】文件操作修改通讯录(升级版本)可以存储数据

文件操作的内容&#xff0c;我们在上文已经学习了&#xff0c;那么如果有不明白的小伙伴请看这篇文章 【C语言】小王带您实现文件操作&#xff08;简单图示讲解&#xff09;_小王学代码的博客-CSDN博客 通讯录我们在之前也学习实现了静态、动态通讯录 【C语言】使用C语言实现静…

深信服某次面试题

1.自我介绍 2.sql注入有哪些&#xff08;一种是字符型和数字型&#xff0c;怎么判断&#xff0c;一种是有无回显&#xff0c;盲注有哪些&#xff09; 3. 盲注中用到的函数和payload有哪些 4.报错注入的原理是什么&#xff0c;有哪些函数&#xff0c;函数的原理是什么 5.sqlmap常…

Unity 工具 之 Jenkins 打包自动化工具的下载/安装/基本操作/任务创建执行/Unity打包自动化简单搭建的相关整理

Unity 工具 之 Jenkins 打包自动化工具的下载/安装/基本操作/任务创建执行/Unity打包自动化简单搭建的相关整理 目录 Unity 工具 之 Jenkins 打包自动化工具的下载/安装/基本操作/任务创建执行/Unity打包自动化简单搭建的相关整理 一、简单介绍 二、Jenkins 的下载 三、Jenk…

C++程序用codeblocks集成开发环境生成的exe文件无法运行情况的解决

C程序用codeblocks集成开发环境生成的exe文件无法运行情况的解决 一般是因为你使用是自带mimgw的Code::Blocks版本&#xff0c;对#include<iostream>支持不完善造成的。 C程序若使用<iostream>这个头文件&#xff0c;在Code::Blocks中编译运行没有问题&#xff0c…

MyBatis一级缓存 二级缓存

MyBatis一级缓存 二级缓存什么是缓存?一级缓存一级缓存失效的四种情况二级缓存怎样开启二级缓存使二级缓存失效的情况二级缓存相关配置缓存查询的数据顺序整合第三方缓存EHCache&#xff08;代替二级缓存&#xff09;什么是缓存? 这是一个地图软件上的根据城市查询模块,对于那…

【青训营】Go的高质量编程

Go的高质量编程 本文内容总结自字节跳动青年训练营 第五届 后端组 什么是高质量&#xff1f; 各种边界条件是否完备异常情况能正常处理&#xff0c;稳定性有保障易读易维护 Go语言开发者Dave Cheney指出&#xff0c;编程需要遵循以下原则&#xff1a; 简单性 消除多余的复…

Linux常用命令——tput命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) tput 通过terminfo数据库对终端会话进行初始化和操作 补充说明 tput命令将通过 terminfo 数据库对您的终端会话进行初始化和操作。通过使用 tput&#xff0c;您可以更改几项终端功能&#xff0c;如移动或更改光…

【内存函数】-关于内存的操作函数

作者&#xff1a;小树苗渴望变成参天大树 作者宣言&#xff1a;认真写好每一篇博客 作者gitee&#xff1a;gitee 如 果 你 喜 欢 作 者 的 文 章 &#xff0c;就 给 作 者 点 点 关 注 吧&#xff01; 内存函数前言一、[memcpy](https://cplusplus.com/reference/cstring/memc…

6、Ubuntu20的JDKMySQLtomcatRedis安装

安装JDK 这里以安装版本8为例 进入存放jdk目录创建目录 cd /usr/local mkdir jdk cd jdk 把下好的jdk8压缩包拖拽到Ubuntu连接用户下 移动jdk包文件 mv /home/starfish/jdk-8u351-linux-x64.tar.gz . 解压jdk tar -zxvf jdk-8u351-linux-x64.tar.gz cd jdk1.8.0_351/ p…

一些工具软件的使用

文章目录010 Editor设置16进制编辑时每行显示的字节数使用列模式编辑VS Code基础操作定义快捷键配置导出/导入列模式将文件中的tab键转换为空格关闭插件自动更新博文链接Beyond Compare文件内容相同依然显示差异过滤文件或文件夹Excel使用组合&#xff0c;进行行、列的折叠使用…

windows系统中环境系统变量和用户变量的区别

前言 -- 什么是环境变量一般我们安装软件之后&#xff0c;为了能够在cmd命令行运行软件&#xff0c;一般都需要设置一下环境变量&#xff0c;否则就会出现找不相关命令的错误提示。所谓环境变量&#xff0c;可以简单理解为就是给操作系统定义的一些路径和名称。比如使用最常使用…

会话跟踪技术:Cookie、Session和Token

会话跟踪技术背景&#xff1a;1. Cookie &#xff08;客户端的会话跟踪技术&#xff09;1.1 原理1.2 基本使用1.2.1 服务器发送Cookie1.2.2 服务器获取Cookie1.3 使用细节1.3.1 存活时间1.3.2 存储中文2. Session&#xff08;服务端的会话跟踪技术&#xff09;2.1 原理2.2 基本…
最新文章