一、第三方资源配置管理

说明:以管理DataSource连接池对象为例讲解第三方资源配置管理

1 管理DataSource连接池对象

问题导入

配置数据库连接参数时,注入驱动类名是用driverClassName还是driver?

1.1 管理Druid连接池【重点】

数据库准备

create database if not exists spring_db character set utf8;
use spring_db;
create table if not exists tbl_account(id int primary key auto_increment,name varchar(20),money double
);
insert into tbl_account values(null,'Tom',1000);
insert into tbl_account values(null,'Jerry',1000);

【第一步】添加Druid连接池依赖

<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.16</version>
</dependency>
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version>
</dependency>

注意:除了添加以上两个依赖之外,别忘了添加spring-context依赖。

【第二步】配置DruidDataSource连接池Bean对象

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/spring_db"/><property name="username" value="root"/><property name="password" value="root"/>
</bean>

【第三步】在测试类中从IOC容器中获取连接池对象并打印

public class App {public static void main(String[] args) {ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");DataSource dataSource = (DataSource) ctx.getBean("dataSource");System.out.println(dataSource);}
}

1.2 管理c3p0连接池

【第一步】添加c3p0连接池依赖

<dependency><groupId>c3p0</groupId><artifactId>c3p0</artifactId><version>0.9.1.2</version>
</dependency>

【第二步】配置c3p0连接池Bean对象

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="driverClass" value="com.mysql.jdbc.Driver"/><property name="jdbcUrl" value="jdbc:mysql://localhost:3306/spring_db"/><property name="user" value="root"/><property name="password" value="root"/><property name="maxPoolSize" value="1000"/>
</bean>

注意:同一个Spring容器中不能有两个id="dataSource"的连接池。

【第三步】在测试类中从IOC容器中获取连接池对象并打印

public class App {public static void main(String[] args) {ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");DataSource dataSource = (DataSource) ctx.getBean("dataSource");System.out.println(dataSource);}
}

2 加载properties属性文件【重点】

目的:将数据库的连接参数抽取到一个单独的文件中,与Spring配置文件解耦。

问题导入

问题1:如何解决使用EL表达式读取属性文件中的值结果读取到了系统属性问题?

问题2:加载properties文件写法标准写法该怎么写?

2.1 基本用法

【第一步】编写jdbc.properties属性文件

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/spring_db
jdbc.username=root
jdbc.password=root

【第二步】在applicationContext.xml中开启开启context命名空间,加载jdbc.properties属性文件

小技巧:如果你觉得上述复制粘贴方式不好改或者容易改错,其实idea是有提示功能的,注意不要选错就行了。有些版本的idea没有这个提示,那么就按照上面复制粘贴的方式改,改完之后可以做成live template模板,后期直接用。

<context:property-placeholder location="jdbc.properties"/>

【第三步】在配置连接池Bean的地方使用EL表达式获取jdbc.properties属性文件中的值

<bean class="com.alibaba.druid.pool.DruidDataSource"><property name="driverClassName" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/>
</bean>

配置完成之后,运行之前的获取Druid连接池代码,可以获取到连接池对象就表示配置成功。

2.2 配置不加载系统属性

问题

如果属性文件中配置的不是jdbc.username,而是username=root666,那么使用${username}获取到的不是root666,而是计算机的名称。

原因

系统属性的优先级比我们属性文件中的高,替换了我们的username=root666。

解决

解决1:换一个名称,例如不叫username,叫jdbc.username。

解决2:使用system-properties-mode="NEVER"属性表示不使用系统属性。

<context:property-placeholder location="jdbc.properties" system-properties-mode="NEVER"/>

2.3 加载properties文件写法

  • 不加载系统属性
<context:property-placeholder location="jdbc.properties" system-properties-mode="NEVER"/>
  • 加载多个properties文件
<context:property-placeholder location="jdbc.properties,msg.properties"/>
  • 加载所有properties文件
<context:property-placeholder location="*.properties"/>
  • 加载properties文件**标准格式**
<context:property-placeholder location="classpath:*.properties"/>
  • 加载properties文件标准格式
<context:property-placeholder location="classpath*:*.properties"/>

spring导入第三方资源相关推荐

  1. LTspice基础教程-015.导入第三方库

    LTspice自带仿真库已经能够应对我们日常大部分的仿真,但对于工程师而言,我们更希望使用所选器件的真实模型.幸运的是大部分半导体厂商会提供spice模型,比如ST,TI,ON,Diodes,nexp ...

  2. 如何快速优雅地导入第三方Android项目

    **丨**版权说明 : <如何快速优雅地导入第三方Android项目>于当前CSDN博客和乘月网属同一原创,转载请说明出处,谢谢. 最近有很多朋友都在向我抱怨导入第三方项目遇到各种各样的问 ...

  3. Spring Boot集成Ueditor富文本编辑器,实现图片上传,视频上传,返回内容功能并且通过OSS转换为链接并且解决Spring Security静态资源访问以及跨域问题

    学习自https://cloud.tencent.com/developer/article/1452451 现在是晚上22点,刚刚和我们的前端交流完了富文本编辑器的一些意见和看法 还是老样子 需求 ...

  4. Spring Boot静态资源映射

    在 Web 应用中会涉及到大量的静态资源,例如 JS.CSS 和 HTML 等.我们知道,Spring MVC 导入静态资源文件时,需要配置静态资源的映射:但在 SpringBoot 中则不再需要进行 ...

  5. cmd库的导入Java,在cmd命令窗口导入第三方jar包来运行java文件

    在cmd命令窗口导入第三方jar包来运行java文件,以下测试都是基于window环境,Linux环境没有测试. 1.编译 使用命令javac -cp或者javac -classpath 本机测试:如 ...

  6. php导包,Thinkphp5.1 导入第三方包的问题

    一般刚接触tp5.1的,会很不适应,虽然版本号只是比5.0多了0.1,但是差别挺大,废弃了不少方法,官方的教程又很简单,很多东西没说全,在此鄙视一下框架作者,最起码体谅一下小白嘛,搞了好多天才把5.1 ...

  7. CocoaPods (第三方资源管理框架)

    2019独角兽企业重金招聘Python工程师标准>>> 一.Cocoa Pods简介 Cocoa Pods是一个负责管理iOS项目中第三方资源的工具,它的项目源代码在Github上面 ...

  8. Android Studio导入第三方类库的方法

     Android Studio导入第三方类库的方法 本人也刚刚开始尝试做android app的开发,听说android studio是Google支持的android 应用开发工具,所以想应该肯 ...

  9. (0001) iOS 开发之收集第三方资源篇

    1.欲先攻其事必先利其器 (第三方资源篇) http://www.cocoachina.com/ios/20160719/17078.html 2.最受欢迎的开源项目 http://www.csdn. ...

最新文章

  1. 选购四级网络工程师优质辅导书的几点建议
  2. python如何爬虫-如何使用python爬虫爬取要登陆的网站
  3. cocos2d-x win8下的环境配置和建立项目
  4. Java格式化日期和时间模式占位符
  5. 初中数学知识遗忘记录(持续更新中)
  6. 乘基取整法是什么_十进制小数转二进制小数乘2取整法的直观理解
  7. 工作效率 工具_我使用的工具加快了我的工作流程,使我的工作效率更高
  8. Ubuntu 下面用ibus在opera中输入中文
  9. 个人永久性免费-Excel催化剂插件功能修复与更新汇总篇之七
  10. java的Apollo的功能_Apollo配置中心
  11. jQuery has(),not()和filter()函数示例
  12. 安卓开发 xml添加滑动条
  13. 企业如何选择SSL证书?
  14. 在SPLUS中直接连接SQLSERVER 2005
  15. html如何让相邻的部分边框消失,css border属性边框一半或者部分可见
  16. msxml3.dll 执行页内操作时的错误
  17. Laravel框架发送邮件 阿星小栈
  18. 如何寻求解脱_在设计中寻求安慰
  19. CSS imitate Microsoft Classic Menu
  20. 无法解析 maven包的问题

热门文章

  1. IE图标不见了,自定义桌面里面也找不到
  2. miniui动态生成列
  3. 基于像素匹配的MATLAB平台身份证号码实时识别
  4. QGC 地面站中获取电压完整教程(QGC中无法获取APM电压)
  5. jmeter阶梯式线程组
  6. https://b23.tv/av...【相关研究】
  7. andorid程序同时支持手机 平板电脑
  8. CISP知识大纲思维导图
  9. Python读取wav音频文件
  10. php中reset是什么意思,路由器的RESET是什么意思有什么用