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

【Spring】加载properties文件

文章目录

  • 在Spring Context中加载properties文件
  • 测试
  • 总结

在Spring Context中加载properties文件

分为三步,如下图所示:
在这里插入图片描述
在这里插入图片描述
完整代码:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><!--    1. 开启context命名空间-->
<!--    2. 使用context空间加载properties文件--><context:property-placeholder location="jdbc.properties"/>
<!--    3. 使用属性占位符${}读取properties文件中的属性--><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/><property name="driverClassName" value="${jdbc.url}" /></bean>
</beans>

测试

该测试用于验证能够读取外部文件的内容
有如下代码:
BookDao.java

package com.example.project1.dao;public interface BookDao {void save();
}

BookDaoImpl.java

package com.example.project1.dao.impl;import com.example.project1.dao.BookDao;public class BookDaoImpl implements BookDao {private String name;@Overridepublic void save() {System.out.println("BookDaoSave...");System.out.println("name:" + this.name);}public void setName(String name) {this.name = name;}
}

在Spring config中配置这个bean,将${jdbc.username}注入到name中:

<bean id="bookDao" class="com.example.project1.dao.impl.BookDaoImpl"><property name="name" value="${jdbc.username}"/>
</bean>

用如下代码测试一下:

package com.example.project1;import com.example.project1.dao.BookDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import javax.sql.DataSource;public class Project1Application {public static void main(String[] args) {// IoC容器ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");// DataSource dataSource = (DataSource) ctx.getBean("dataSource");// System.out.println(dataSource);BookDao bookDao = (BookDao) ctx.getBean("bookDao");bookDao.save();}}

结果:
在这里插入图片描述

总结

在这里插入图片描述

  1. 不加载系统属性

指的是假如在配置文件中写的是username=aaa,配置bookDao如下:

<bean id="bookDao" class="com.example.project1.dao.impl.BookDaoImpl"><property name="name" value="${username}"/>
</bean>

此时运行出来的name可能不是aaa,而是系统的名字:
在这里插入图片描述
因为系统的一些变量优先级比这里的property高,如果不想这样可以在使用context空间加载properties处配置system-properties-mode="NEVER"

<context:property-placeholder location="jdbc.properties" system-properties-mode="NEVER"/>
  1. 加载多个properties文件可以用逗号分隔
  2. 加载所有properties文件可以用正则*.properties
  3. 以上写法不够标准,标准的是classpath:*.properties
  4. 如果不止要从工程中加载properties文件,还要从jar包等中加载,则写classpath*:*properties

第4、5种根据不同的需求来写

相关文章:

【Spring】加载properties文件

文章目录 在Spring Context中加载properties文件测试总结 在Spring Context中加载properties文件 分为三步&#xff0c;如下图所示&#xff1a; 完整代码&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.…...

react中间件的理解

一、是什么&#xff1f; 中间件&#xff08;Middleware&#xff09;在计算机中&#xff0c;是介于应用系统和系统软件之间的一类软件&#xff0c;它使用系统软件所提供的基础服务&#xff08;功能&#xff09;&#xff0c;衔接网络应用上的各个部分或不同的应用&#xff0c;能…...

React函数组件状态Hook—useState《进阶-对象数组》

React函数组件状态-state 对象 state state 中可以保存任意类型的 JavaScript 值&#xff0c;包括对象。但是&#xff0c;你不应该直接修改存放在 React state 中的对象。相反&#xff0c;当你想要更新⼀个对象时&#xff0c;你需要创建⼀个新的对象&#xff08;或者将其拷⻉⼀…...

linux 网络 cat /proc/net/dev 查看测试网络丢包情况

可以通过 cat /proc/net/dev 查看测试网络丢包情况&#xff0c;drop关键字&#xff0c;查看所有网卡的丢包情况 还可以看其他数据&#xff0c; /proc/net/下面有如下文件...

记录配置VS,使用opencv与Eigen

方法一&#xff1a; 1.下载VS 2.配置opencv,参考大佬博客&#xff0c;注意更改博客中版本的部分细节&#xff0c;比如opencv_world440d.lib换成自己下载的版本 3.配置Eigen,参考大佬博客 方法二&#xff1a;博客 本人第一次配置时候按照这篇内容配置的&#xff0c;但是不知道哪…...

uart控制led与beep

仲裁模块代码&#xff1a; // 外设控制模块&#xff0c;根据uart接收到的数据&#xff0c;控制led与beep的标志信号。 module arbit(input wire sys_clk ,input wire sys_rst_n ,input wire pi_flag …...

Linux修改root密码

如果知道当前的root密码&#xff0c;修改boot密码操作较简单。 步骤如下&#xff1a; # passwd --在root用户下执行passwd命令 Changing password for user root. New password: --此处输入新密码 BAD PASSWORD: The password is shorter than 8 characters Ret…...

C/C++模板类模板与函数模板区别,以及用法详解

类模板 类模板语法 类模板作用&#xff1a; 建立一个通用类&#xff0c;类中的成员 数据类型可以不具体制定&#xff0c;用一个虚拟的类型来代表。 语法&#xff1a; template<typename T> 类解释&#xff1a; template --- 声明创建模板 typename --- 表面其后面的…...

van-dialog弹窗异步关闭-校验表单

van-dialog弹窗异步关闭 有时候我们需要通过弹窗去处理表单数据&#xff0c;在原生微信小程序配合vant组件中有多种方式实现&#xff0c;其中UI美观度最高的就是通过van-dialog嵌套表单实现。 通常表单涉及到是否必填&#xff0c;在van-dialog的确认事件中直接return是无法阻止…...

Dynamic Wallpaper 16.7中文版

Macos动态壁纸推荐&#xff1a; Dynamic Wallpaper是一款Mac平台上的动态壁纸应用程序&#xff0c;它可以根据时间等因素动态切换壁纸&#xff0c;提供更加生动和多样化的桌面体验。 Dynamic Wallpaper包含了多个动态壁纸&#xff0c;用户可以根据自己的喜好选择和切换。这些…...

​如何使用ArcGIS Pro制作渐变河流效果

对于面要素的河流水系&#xff0c;制作渐变效果方法比较简单&#xff0c;如果是线要素的河流有办法制作渐变效果吗&#xff0c;答案是肯定的&#xff0c;这里为大家介绍一下制作方法&#xff0c;希望能对你有所帮助。 数据来源 本教程所使用的数据是从水经微图中下载的水系数…...

《网络协议》06. HTTP 补充 · HTTPS · SSL/TLS

title: 《网络协议》06. HTTP 补充 HTTPS SSL/TLS date: 2022-10-06 18:09:55 updated: 2023-11-15 07:53:52 categories: 学习记录&#xff1a;网络协议 excerpt: HTTP/1.1 协议的不足、HTTP/2、HTTP/3、HTTP 协议的安全问题、SPDY、HTTPS、SSL/TLS、OpenSSL。 comments: fa…...

Python winreg将cmd/PowerShell(管理员)添加到右键菜单

效果 1. 脚本 用管理员权限运行&#xff0c;重复执行会起到覆盖效果&#xff08;根据sub_key&#xff09;。 icon自己设置。text可以自定义。sub_key可以改但不推荐&#xff08;避免改成和系统已有项冲突的&#xff09;。command不要改。 from winreg import *registry r&q…...

redis运维(九)字符串(二)字符串过期时间

一 字符串过期时间 细节点&#xff1a; 注意命令的入参和返回值 ① 再谈过期时间 说明&#xff1a; 设置key的同时并且设置过期时间,是一个原子操作 ② ttl 检查过期时间 ③ persist 删除过期时间 ④ redis 删除过期key的机制 ⑤ 惰性删除 惰性理解&#xff1a;让过期…...

【C++】多线程的学习笔记(3)——白话文版(bushi

前言 好久没有继续写博客了&#xff0c;原因就是去沉淀了一下偷懒了一下 现在在学网络编程&#xff0c;c的多线程也还在学 这一变博客就讲讲c中的Condition Variable库吧 Condition Variable的简介 官方原文解释 翻译就是 条件变量是一个对象&#xff0c;它能够阻止调用…...

kotlin--3.集合操作

目录 一.list集合 二.Set集合 三.Map集合 迭代遍历Map集合&#xff1a; 8.hashMap 四.Stream流 1.map 2.filter 3.reduce 4.forEach 5.sorted 6.distinct 7.综合案例 一.list集合 在Kotlin中&#xff0c;常见的List集合类型有以下几种&#xff1a; listOf&…...

自动驾驶-BEV感知综述

BEV感知综述 随着自动驾驶传感器配置多模态化、多源化&#xff0c;将多源信息在unified View下表达变得更加关键。BEV视角下构建的local map对于多源信息融合及理解更加直观简洁&#xff0c;同时对于后续规划控制模块任务的开展也更为方便。BEV感知的核心问题是&#xff1a; …...

面试题-3

1.说一下原型链 原型就是一个普通对象,它是为构造函数实例共享属性和方法&#xff0c;所有实例中引用原型都是同一个对象 使用prototype可以把方法挂载在原型上&#xff0c;内存值保存一致 _proto_可以理解为指针,实例对象中的属性,指向了构造函数的原型(prototype) 2.new操…...

C++ Core Guidelines 中文版 GSL

C GSL&#xff08;Guideline Support Library&#xff09;是由 Microsoft 开发的一个开源库&#xff0c;旨在提供一组通用的 C 标准库扩展&#xff0c;以支持 C 标准委员会提出的指导原则。GSL 为 C 开发人员提供了许多有用的工具和类型&#xff0c;以帮助他们编写更安全、更高…...

同时显示上下两层凸包特征的可视化程序

数据类型 std::vector<pcl::PointCloud<pcl::PointXYZ>::Ptr> hulls_k_upper std::vector<pcl::PointCloud<pcl::PointXYZ>::Ptr> hulls_k_lower std::vector<pcl::PointCloud<pcl::PointXYZ>::Ptr> hulls_underk_upper std::vector<…...

探索五大革新能力:BetterGI如何全方位重塑原神自动化体验

探索五大革新能力&#xff1a;BetterGI如何全方位重塑原神自动化体验 【免费下载链接】better-genshin-impact &#x1f368;BetterGI 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动派遣 | 一键强化 - UI Automation Testing Tools …...

5分钟掌握MPC Video Renderer:解锁专业级HDR视频渲染的完整解决方案

5分钟掌握MPC Video Renderer&#xff1a;解锁专业级HDR视频渲染的完整解决方案 【免费下载链接】VideoRenderer RTX HDR modded into MPC-VideoRenderer. 项目地址: https://gitcode.com/gh_mirrors/vid/VideoRenderer MPC Video Renderer是一款功能强大的开源DirectSh…...

零售行业自动化解决方案选型,核心看这几点:企业级智能体架构与落地实测分析

当前&#xff0c;零售行业正处于从“信息化”向“智能化”跨越的关键拐点。 面对全渠道运营的复杂性、劳动力成本的持续攀升以及消费者对交付时效的极致追求&#xff0c; 自动化解决方案已成为零售企业降本增效的核心战略工具。 然而&#xff0c;市场中各类技术路径分化严重&am…...

SEO网站推广的发展历程是怎样的

<h2>SEO网站推广的发展历程&#xff1a;从初始阶段到现代优化</h2> <p>随着互联网的迅速发展&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;作为网站推广的重要手段&#xff0c;经历了漫长而复杂的发展历程。SEO的进化不仅改变了网站如何被搜索引擎索…...

如何让AI创作速度提升3倍?智能缓存技术TeaCache的完整指南

如何让AI创作速度提升3倍&#xff1f;智能缓存技术TeaCache的完整指南 【免费下载链接】ComfyUI-TeaCache 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-TeaCache 你是否曾为AI图像和视频生成的速度而烦恼&#xff1f;看着进度条缓慢移动&#xff0c;等待数分…...

Shell脚本实战指南:从零基础到自动化高手

1. Shell脚本入门&#xff1a;从Hello World到实战 第一次接触Shell脚本时&#xff0c;我和大多数人一样&#xff0c;被那些神秘的符号和命令搞得一头雾水。直到我意识到&#xff0c;Shell脚本其实就是把平时在终端里手动输入的命令&#xff0c;写进一个文件里自动执行。举个例…...

不同品牌路由器也能玩桥接?TP-LINK AC1200主路由+FAST FWR303副路由详细配置指南

跨品牌路由器桥接实战&#xff1a;TP-LINK AC1200与FAST FWR303混合组网全解析 现代家庭网络环境中&#xff0c;信号死角问题如同房间角落的灰尘一样难以避免。特别是当房屋结构复杂或面积较大时&#xff0c;单台路由器往往力不从心。此时&#xff0c;利用家中闲置的旧路由器进…...

终极指南:如何在浏览器中创建惊艳的WebGL流体模拟效果

终极指南&#xff1a;如何在浏览器中创建惊艳的WebGL流体模拟效果 【免费下载链接】WebGL-Fluid-Simulation Play with fluids in your browser (works even on mobile) 项目地址: https://gitcode.com/gh_mirrors/web/WebGL-Fluid-Simulation 想要在浏览器中体验令人惊…...

搜索时代的命名战略:如何在亚马逊规避“品牌失语症”

在亚马逊这个由算法与关键词统治的商业世界里&#xff0c;一个名字的恰当与否&#xff0c;直接决定了品牌是“响亮宣言”还是“沉默失语”。许多名字如同《时代》或《财富》杂志&#xff0c;在传统语境中或许优雅&#xff0c;但在需要极致精准的数字货架上&#xff0c;却可能因…...

大学物理(上)-期末实战解析(5)——刚体力学核心:从转动惯量到角动量守恒的解题秘籍

1. 刚体力学入门&#xff1a;为什么转动惯量是解题钥匙 刚体力学是大学物理中最让人头疼的章节之一&#xff0c;尤其是当题目里出现"转动惯量"这个名词时&#xff0c;很多同学就开始手心冒汗。记得我第一次做这类题目时&#xff0c;盯着那个积分符号看了半小时愣是没…...