spring导入第三方资源
一、第三方资源配置管理
说明:以管理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导入第三方资源相关推荐
- LTspice基础教程-015.导入第三方库
LTspice自带仿真库已经能够应对我们日常大部分的仿真,但对于工程师而言,我们更希望使用所选器件的真实模型.幸运的是大部分半导体厂商会提供spice模型,比如ST,TI,ON,Diodes,nexp ...
- 如何快速优雅地导入第三方Android项目
**丨**版权说明 : <如何快速优雅地导入第三方Android项目>于当前CSDN博客和乘月网属同一原创,转载请说明出处,谢谢. 最近有很多朋友都在向我抱怨导入第三方项目遇到各种各样的问 ...
- Spring Boot集成Ueditor富文本编辑器,实现图片上传,视频上传,返回内容功能并且通过OSS转换为链接并且解决Spring Security静态资源访问以及跨域问题
学习自https://cloud.tencent.com/developer/article/1452451 现在是晚上22点,刚刚和我们的前端交流完了富文本编辑器的一些意见和看法 还是老样子 需求 ...
- Spring Boot静态资源映射
在 Web 应用中会涉及到大量的静态资源,例如 JS.CSS 和 HTML 等.我们知道,Spring MVC 导入静态资源文件时,需要配置静态资源的映射:但在 SpringBoot 中则不再需要进行 ...
- cmd库的导入Java,在cmd命令窗口导入第三方jar包来运行java文件
在cmd命令窗口导入第三方jar包来运行java文件,以下测试都是基于window环境,Linux环境没有测试. 1.编译 使用命令javac -cp或者javac -classpath 本机测试:如 ...
- php导包,Thinkphp5.1 导入第三方包的问题
一般刚接触tp5.1的,会很不适应,虽然版本号只是比5.0多了0.1,但是差别挺大,废弃了不少方法,官方的教程又很简单,很多东西没说全,在此鄙视一下框架作者,最起码体谅一下小白嘛,搞了好多天才把5.1 ...
- CocoaPods (第三方资源管理框架)
2019独角兽企业重金招聘Python工程师标准>>> 一.Cocoa Pods简介 Cocoa Pods是一个负责管理iOS项目中第三方资源的工具,它的项目源代码在Github上面 ...
- Android Studio导入第三方类库的方法
Android Studio导入第三方类库的方法 本人也刚刚开始尝试做android app的开发,听说android studio是Google支持的android 应用开发工具,所以想应该肯 ...
- (0001) iOS 开发之收集第三方资源篇
1.欲先攻其事必先利其器 (第三方资源篇) http://www.cocoachina.com/ios/20160719/17078.html 2.最受欢迎的开源项目 http://www.csdn. ...
最新文章
- 选购四级网络工程师优质辅导书的几点建议
- python如何爬虫-如何使用python爬虫爬取要登陆的网站
- cocos2d-x win8下的环境配置和建立项目
- Java格式化日期和时间模式占位符
- 初中数学知识遗忘记录(持续更新中)
- 乘基取整法是什么_十进制小数转二进制小数乘2取整法的直观理解
- 工作效率 工具_我使用的工具加快了我的工作流程,使我的工作效率更高
- Ubuntu 下面用ibus在opera中输入中文
- 个人永久性免费-Excel催化剂插件功能修复与更新汇总篇之七
- java的Apollo的功能_Apollo配置中心
- jQuery has(),not()和filter()函数示例
- 安卓开发 xml添加滑动条
- 企业如何选择SSL证书?
- 在SPLUS中直接连接SQLSERVER 2005
- html如何让相邻的部分边框消失,css border属性边框一半或者部分可见
- msxml3.dll 执行页内操作时的错误
- Laravel框架发送邮件 阿星小栈
- 如何寻求解脱_在设计中寻求安慰
- CSS imitate Microsoft Classic Menu
- 无法解析 maven包的问题