spring创建数据库连接池对象 + 引用外部的属性文件(jdconfig.properties)

模块一:spring创建数据库连接池对象

导入连接池和驱动的包:(目前没有build path)
在这里插入图片描述
导入之后查看依赖包:
在这里插入图片描述

分享一个知识点:
spring的ioc容器中配置文件,一般都是用bean配置的,里面是一些bean,每个bean都有自己的id。当我们需要对象的时候就从ioc容器里面获取,根据的就是这个ID。重点来了,我们还可以根据class获取到指定的bean

xml文件,

	<!-- 引用外部属性文件 -->
	<!-- 数据库连接池作为单实例是最好的,一个项目就一个连接池,连接池里面管理很多连接-->
	<!-- 可以让Spring帮我们创建连接池对象,管理连接池 -->
<bean id ="datasource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="user" value="root"></property>
		<property name="password" value="123456"></property>
		<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test"></property>
		<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
		</bean>

iocTest文件中

class IOCTest {
	ConfigurableApplicationContext ioc = new ClassPathXmlApplicationContext("applicationContext02.xml");
	@Test
	public void test() throws SQLException {
		//1、从容器中拿到连接池
		//DataSource bean = (DataSource) ioc.getBean("datasource");
		
		//2、按照类型获取组件,可以获取到这个类型下的所有实现类子类,
		//为啥用的是DataSource这个类呢?为什么不用ComboPooledDataSource
		//两个都可以,只不过ComboPooledDataSource是DataSource的实现类
		DataSource bean2 = ioc.getBean(DataSource.class);
		System.out.println(bean2.getConnection());		
	}
}

如何获取到bean的呢?
按照类型获取组件,可以获取到这个类型下的所有实现类子类,为啥用的是DataSource这个类呢?为什么不用ComboPooledDataSource?
两个都可以,只不过ComboPooledDataSource是DataSource的实现类
这样写也可以
在这里插入图片描述

模块二:引用外部的属性文件

依赖的是context名称空间。这是第四个名称空间了。
第一个是bean名称空间,
第二个是P名称空间,
第三个是util名称空间
老规矩:先引用
在这里插入图片描述
在这里插入图片描述
引入外部配置文件标签 classpath:表示引用类路径下的一个资源,bin目录的开始
再次强调,保存配置文件的信息要放在源码文件夹下面,不是普通文件夹

<!-- 引入外部配置文件标签 -->
<context:property-placeholder location="classpath:dbconfig.properties"/>

如何从外部配置文件中取值呢?
${key}动态取出配置文件中某个key对应的值
修改过后的xml:

<context:property-placeholder location="dbconfig.properties"/>
	<bean id ="datasource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="user" value="${username}"></property>
		<property name="password" value="${password}"></property>
		<property name="jdbcUrl" value="${jdbcUrl}"></property>
		<property name="driverClass" value="${driverClass}"></property>
		</bean>

在test里面测试:
在这里插入图片描述
弹不出结果???????
修改username,为username2,测试
在这里插入图片描述
显示结果,因为username在spring中是关键字,为了防止配置文件中的key和spring中自己的关键字冲突,这里修改username为jdbc.username其他也一样。
在这里插入图片描述

小知识强调:配置文件中的value属性里面的} 和 ” 之间不要加空格,写成:"${jdbc.username} "
这样写会显示access denied 拒绝访问

<property name="user" value="${jdbc.username}"></property>

我又懂了:
在代码:

<bean id ="datasource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<property name="user" value="${jdbc.username}"></property>
		<property name="password" value="${jdbc.password}"></property>
		<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
		<property name="driverClass" value="${jdbc.driverClass}"></property>
		</bean>

代码中的name后面的参数,不是自己定义的,而是从ComboPooledDataSource,class里面取出来的啊!!!!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你在狗叫什么、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值