使用外部属性文件

在配置文件里配置 Bean 时, 有时需要在 Bean 的配置里混入系统部署的细节信息(例如: 文件路径, 数据源配置信息等). 而这些部署细节实际上需要和 Bean 配置相分离

Spring 提供了一个 PropertyPlaceholderConfigurer 的 BeanFactory 后置处理器, 这个处理器允许用户将 Bean 配置的部分内容外移到属性文件中. 可以在 Bean 配置文件里使用形式为 ${var} 的变量, PropertyPlaceholderConfigurer 从属性文件里加载属性,并使用这些属性来替换变量.

Spring 还允许在属性文件中使用 ${propName},以实现属性之间的相互引用。

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test
jdbc.username=root
jdbc.password=1234
<?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/beans
http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd"><!-- 配置连接池  数据源 --><!-- 引入外部化的配置文件 --><context:property-placeholder location="classpath:db.properties"/><!-- <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="location" value="classpath:db.properties"></property></bean> --><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="driverClass" value="${jdbc.driver}"></property><property name="jdbcUrl" value="${jdbc.url}"></property><property name="user" value="${jdbc.username}"></property><property name="password" value="${jdbc.password}"></property></bean></beans>
package com.learn.spring.properties;import java.sql.Connection;import javax.sql.DataSource;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class Main {public static void main(String[] args)  throws Exception{//1.实例化容器ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-properties.xml");DataSource ds = (DataSource)ctx.getBean("dataSource");System.out.println(ds);Connection conn = ds.getConnection();System.out.println(conn);}
}

引入外部化的配置文件相关推荐

  1. spring核心配置文件引入外部properties文件和另外的xml配置文件

    spring核心配置文件引入外部properties文件和另外的xml配置文件 为什么要引入外部文件 我们使用jdbc的时候,会创建一个jdbc.properties配置文件,如果我需要在spring ...

  2. springboot引入外部yml配置文件

    本文记录下springboot引入外部yml配置文件 文章目录 概述 本文小结 概述 如果不想把所有的配置都写在application.yml文件中,把它拆分成多个yml文件,并在applicatio ...

  3. 超级详细!!!SpringBoot2核心技术与响应式编程尚硅谷完整知识点笔记 下篇 自动配置、容器、Web、数据响应、拦截器、SQL、NOSQL、原理、Junit5、Actuator、外部化配置等

    所有配套资料已上传到QQ群:167356412  需要的话群文件自取 06.数据访问 1.SQL 1.数据源的自动配置-HikariDataSource 1.导入JDBC场景 <dependen ...

  4. 详解SpringBoot外部化配置

    SpringBoot外部化配置(基于2.4.0以后) Spring Boot可以让你将配置外部化,这样你就可以在不同的环境中使用相同的应用程序代码. 你可以使用各种外部配置源,包括Java prope ...

  5. React-项目-引入外部的样式(14)

    react项目如何引入外部的样式,比如我们常常用到的bootstrap ,这篇我们将介绍如何使用外部的第三方的样式 我们在使用之前首先是需要安装bootstrap 如何安装: 我们可以看官网: 这里我 ...

  6. springboot 获取application参数_LOOK ! SpringBoot的外部化配置最全解析

    本篇要点 介绍各种配置方式的优先级. 介绍各种外部化配置方式. 介绍yaml的格式及原理. 介绍如何绑定并测试类型安全的属性配置. 介绍@ConfigurationProperties与@Value的 ...

  7. Dubbo 新编程模型之外部化配置

    2019独角兽企业重金招聘Python工程师标准>>> 外部化配置(External Configuration) 在Dubbo 注解驱动例子中,无论是服务提供方,还是服务消费方,均 ...

  8. springboot 获取application参数_LOOK ! SpringBoot的外部化配置最全解析

    本篇要点 介绍各种配置方式的优先级. 介绍各种外部化配置方式. 介绍yaml的格式及原理. 介绍如何绑定并测试类型安全的属性配置. 介绍@ConfigurationProperties与@Value的 ...

  9. Spring Cloud配置–外部化应用程序配置

    本教程是关于Spring Cloud Config的,这里我们将研究如何在不同的应用程序中针对不同的环境(例如开发人员,本地,产品等)使用Spring Cloud Config来管理和存储分布式外部配 ...

最新文章

  1. 一副耳机的钱,竟让我体验了「元宇宙」办公
  2. [NOIP2012] 借教室
  3. BZOJ 1833 ZJOI2010 count 数字计数 数位DP
  4. 结婚率连7年下降,数据揭秘单身背后复杂逻辑
  5. VTK:网格之FillHoles
  6. 一个监测IIS,并定时重新启动的程序。
  7. php魔术方法例子,PHP中魔术方法的使用举例
  8. Python笔记-使用sqlalchemy根据类创建数据库表
  9. linux-用户管理190919
  10. Java学习前,需要掌握的一些基础知识
  11. 索引扫描时,对同一个叶子块访问多次的原因初探
  12. 置为底层_头一次见浴室装修这样设计,浴缸两头砌上置物台,实用又方便
  13. VisualDiffer for Mac(文件对比利器)支持m1
  14. 设计模式之观察者Observer
  15. 简历模板下载word格式 空白word简历模板下载 电子版个人简历下载
  16. python opencv读大华摄像头视频流实时移动侦测运动检测截图拍照保存
  17. Spring Cloud Alibaba微服务架构实战教程—15最详细的Gateway统一网关
  18. 七牛云图片外链失效的解决办法
  19. @guardedby同步注解
  20. 15款jQuery幻灯片插件

热门文章

  1. CPU profiling
  2. ReactiveStream01
  3. 开源方案搭建可离线的精美矢量切片地图服务-3.Mapbox个性化地图定制入门
  4. Eclipse快捷键壁纸-0基础必备
  5. js实现无缝循环滚动
  6. linux学习笔记(4):Ubuntu终端字符界面下的重启与关机命令
  7. andoid 打包短信发送到gmail邮箱
  8. JDBC事务和JTA事务的区别 --包含spring事务 声明式事务
  9. PHP学习笔记(一):理解匿名函数与Closure
  10. Linux字符设备驱动框架