在项目中我们一般将配置信息(如数据库的配置信息)配置在一个properties文件中,如下:
jdbcUrl=jdbc:mysql://localhost:3306/flowable?useUnicode=true&characterEncoding=utf8&autoReconnect=true&rewriteBatchedStatements=TRUE&useSSL=false&serverTimezone=UTC userName=root userPassword=123456 jdbcDriver=com.mysql.cj.jdbc.Driver
接着在Spring的配置文件中读取,有两种方式:
方式一:
1 2 3 4 5 6 7 8 9 10 11 12 13 | <bean class = "org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" > <!-- 对于读取一个配置文件采取的方案 --> <property name= "location" value= "classpath:config.properties" ></property> <!-- 对于读取两个以上配置文件采取的处理方案 --> <!-- <property name= "locations" > <list> <value>classpath:config.properties</value> <value>classpath:config2.properties</value> </list> </property> --> </bean> |
方式二:
1 2 | <!--采用这种方式简化配置文件--> <context:property-placeholder location= "classpath:config.properties" /> |
我们知道,不论是使用PropertyPlaceholderConfigurer还是通过context:property-placeholder这种方式进行实现,都需要记住,Spring框架不仅仅会读取我们的配置文件中的键值对,而且还会读取Jvm 初始化的一下系统的信息。有时候,我们需要将配置Key定一套命名规则 ,例如
1 2 | 项目名称.组名.功能名=配置值 org.team.tfunction=0001 |
同时,我们也可以使用下面这种配置方式进行配置,这里我配NEVER的意思是不读取系统配置信息。如:
1 | <context:property-placeholder location= "classpath:config.properties" system-properties-mode= "NEVER" /> |
测试用例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | @RunWith(SpringJUnit4ClassRunner. class ) @ContextConfiguration( "classpath:spring-core.xml" ) public class SpringContextTest { @Value( "${userName}" ) private String uname; @Value( "${userPassword}" ) private String pwd; @Test public void test() { System. out .println( "username:" + uname); System. out .println( "password:" + pwd); } } |
1 | username:root<br>password:123456 |
配置文件中使用就比较简单了:
1 2 3 4 5 6 7 8 9 | <bean id= "dataSource" class = "com.alibaba.druid.pool.DruidDataSource" destroy-method= "close" > <!-- 数据库基本信息配置 --> <property name= "url" value= "${jdbcUrl}" /> <property name= "username" value= "${userName}" /> <property name= "password" value= "${userPassword}" /> <property name= "driverClassName" value= "${jdbcDriver}" /> </bean> |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端