Spring引入c3p0数据源外部配置文件
1. 导入jdbc\c3p0依赖
<dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.1.2</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.18</version> </dependency>
2. Java
package com.spring.properties; import javax.sql.DataSource; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Main { public static void main(String[] args) { ApplicationContext etx = new ClassPathXmlApplicationContext("beans-properties.xml"); //1. 内部定义 DataSource dataSource = (DataSource) etx.getBean("dataSource"); System.out.println(dataSource); //2. 外部定义 DataSource dataSource1 = (DataSource) etx.getBean("dataSource1"); System.out.println(dataSource1); } }
XML:
<?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:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd"> <!-- 1. 内部定义 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" p:driverClass="com.mysql.jdbc.Driver" p:user="root" p:password="123456" p:maxPoolSize="50" p:minPoolSize="1" p:initialPoolSize="1" p:maxIdleTime="20" p:jdbcUrl="jdbc:mysql:///test"/> <!-- 2,引入外部contextSchema命名空间; 2,导入外部配置文件 --> <context:property-placeholder location="classpath:./ab.properties"/> <bean id="dataSource1" class="com.mchange.v2.c3p0.ComboPooledDataSource" p:driverClass="${driverClass}" p:user="${user}" p:password="${password}" p:maxPoolSize="${maxPoolSize}" p:minPoolSize="${minPoolSize}" p:initialPoolSize="${initialPoolSize}" p:maxIdleTime="${initialPoolSize}" p:jdbcUrl="${jdbcUrl}"> </bean> </beans>
外部配置文件db.properties
driverClass=com.mysql.jdbc.Driver user=root password=123456 maxPoolSize=50 minPoolSize=1 initialPoolSize=1 maxIdleTime=20 jdbcUrl=jdbc:mysql:///test/
运行结果:
信息: Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -> 3, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, dataSourceName -> 1hge1hk9d1qgq3ukke56np|17d677df, debugUnreturnedConnectionStackTraces -> false, description -> null, driverClass -> com.mysql.jdbc.Driver, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, identityToken -> 1hge1hk9d1qgq3ukke56np|17d677df, idleConnectionTestPeriod -> 0, initialPoolSize -> 1, jdbcUrl -> jdbc:mysql:///test, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 20, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 50, maxStatements -> 0, maxStatementsPerConnection -> 0, minPoolSize -> 1, numHelperThreads -> 3, numThreadsAwaitingCheckoutDefaultUser -> 0, preferredTestQuery -> null, properties -> {user=******, password=******}, propertyCycle -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, usesTraditionalReflectiveProxies -> false ] com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -> 3, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, dataSourceName -> 1hge1hk9d1qgq3ukke56np|17d677df, debugUnreturnedConnectionStackTraces -> false, description -> null, driverClass -> com.mysql.jdbc.Driver, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, identityToken -> 1hge1hk9d1qgq3ukke56np|17d677df, idleConnectionTestPeriod -> 0, initialPoolSize -> 1, jdbcUrl -> jdbc:mysql:///test, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 20, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 50, maxStatements -> 0, maxStatementsPerConnection -> 0, minPoolSize -> 1, numHelperThreads -> 3, numThreadsAwaitingCheckoutDefaultUser -> 0, preferredTestQuery -> null, properties -> {user=******, password=******}, propertyCycle -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, usesTraditionalReflectiveProxies -> false ] 十二月 27, 2015 9:49:33 上午 com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource getPoolManager 信息: Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -> 3, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, dataSourceName -> 1hge1hk9d1qgq3ukke56np|16022d9d, debugUnreturnedConnectionStackTraces -> false, description -> null, driverClass -> com.mysql.jdbc.Driver, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, identityToken -> 1hge1hk9d1qgq3ukke56np|16022d9d, idleConnectionTestPeriod -> 0, initialPoolSize -> 1, jdbcUrl -> jdbc:mysql:///test/, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 1, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 50, maxStatements -> 0, maxStatementsPerConnection -> 0, minPoolSize -> 1, numHelperThreads -> 3, numThreadsAwaitingCheckoutDefaultUser -> 0, preferredTestQuery -> null, properties -> {user=******, password=******}, propertyCycle -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, usesTraditionalReflectiveProxies -> false ] com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -> 3, acquireRetryAttempts -> 30, acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, dataSourceName -> 1hge1hk9d1qgq3ukke56np|16022d9d, debugUnreturnedConnectionStackTraces -> false, description -> null, driverClass -> com.mysql.jdbc.Driver, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, identityToken -> 1hge1hk9d1qgq3ukke56np|16022d9d, idleConnectionTestPeriod -> 0, initialPoolSize -> 1, jdbcUrl -> jdbc:mysql:///test/, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 1, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 50, maxStatements -> 0, maxStatementsPerConnection -> 0, minPoolSize -> 1, numHelperThreads -> 3, numThreadsAwaitingCheckoutDefaultUser -> 0, preferredTestQuery -> null, properties -> {user=******, password=******}, propertyCycle -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, usesTraditionalReflectiveProxies -> false ]
相关推荐
在Spring框架中,动态加载配置文件是一项重要的功能,它允许我们在程序运行时改变或更新配置,而无需重启应用。这在开发和生产环境中都具有很高的实用价值,尤其是在配置需要频繁调整或者希望实现热更新的场景下。...
于是,我们可以将 `spring.config.location` 写入 `application.properties` 配置文件中,然后指定一个固定的外部配置文件来获取信息。 但是,这种方式也存在一些问题,例如,如果我们的配置文件中有以下信息:`my...
### Spring Cloud Config 配置中心搭建与 Git 多文件夹存放配置文件 #### 一、Spring Cloud Config 配置中心简介 Spring Cloud Config 是一种分布式配置解决方案,它为微服务架构中的应用程序提供了一种集中式的...
本资源"spring+mybatis+atomikos配置文件及相关包(最新版)"提供了整合Spring、MyBatis和Atomikos的配置文件和相关库,以支持在分布式环境下的事务管理。下面将详细解释这三个组件以及它们在分布式事务中的作用。 ...
Spring Boot 引入外部 Jar 包的坑 Spring Boot 框架在实际项目开发中...在 Spring Boot 项目中引入外部 Jar 包需要注意以上几点,以免陷入坑中,同时也需要注意 Maven 的配置,以便正确地将 Jar 包包含在生成的包中。
我们可以通过 <import> 来引入多个外部配置文件,resource 属性支持 Spring 的标准资源路径。 大型应用的配置文件整合 大型应用为了防止开发时发生配置文件资源竞争现象,或者为了使模块便于拆分,往往每个模块都...
在Spring 2.5版本中,这个配置文件引入了许多增强的功能,提升了开发效率和灵活性。下面我们将详细探讨`applicationContext.xml`在Spring 2.5中的重要知识点。 1. **Bean的定义**:在`applicationContext.xml`中,...
Spring允许通过`import`元素导入其他配置文件,或者使用`@Import`注解在Java配置中引入其他配置类。 9. ** Spring Boot **:Spring Boot简化了Spring应用的启动和配置过程,它默认提供了一套标准的配置,开发者只...
- **外部加载**:除了类路径下的配置文件,还可以通过`--spring.config.location`命令行参数指定额外的配置文件位置。 - **环境变量**:使用`SPRING_APPLICATION_JSON`环境变量或`@PropertySource`注解也可以引入...
接下来,我们需要在`bboss-ioc.xml`配置文件中引入这个外部属性文件。BBoss提供了一个`<property-placeholder>`标签来实现这一点: ```xml <value>classpath:config.properties ``` 在上述配置中,`...
以上只是`applicationContext.xml`配置文件中一部分常见的知识点,实际应用中还有更多高级特性和用法,例如:工厂方法、属性文件外部化、bean的懒加载等。通过深入理解和熟练运用这些配置,开发者可以更好地利用...
在Spring Boot应用中,我们通常使用YAML或properties文件来管理配置,但有时也需要与传统的XML配置文件集成,特别是当我们需要处理遗留系统或是利用Spring的一些特定功能时。本篇文章将详细探讨如何在Spring Boot...
然后,在 Spring 配置文件中,我们可以使用 PropertyPlaceholderConfigurer 来引用外部属性文件: ``` <!-- 引入外部属性文件 --> <bean class="org.springframework.beans.factory.config....
-- 引用外部配置文件中的C3P0参数 --> ${c3p0.minPoolSize}"/> ${c3p0.maxPoolSize}"/> ${c3p0.acquireIncrement}"/> ${c3p0.idleTestPeriod}"/> ${c3p0.maxIdleTime}"/> ``` 这里,我们使用了Spring的SpEL...
在Java开发中,尤其是使用SSM(Spring、Struts、MyBatis)框架时,配置文件的管理至关重要。Properties文件通常用于存储应用的配置参数,如数据库连接信息、系统设置等。本文将深入探讨在SSM框架下加载properties...
本篇文章将深入探讨在Spring Boot中如何读取不同路径下的`applicationContext.xml`配置文件。 首先,理解Spring Boot的启动流程至关重要。Spring Boot通过`SpringApplication`类来启动,它会默认寻找`src/main/...
- ** profiles**: Spring Boot 支持配置文件按环境(如 development, testing, production)划分,通过 `spring.profiles.active` 属性来激活特定环境的配置。 - **Actuator**: `spring-boot-starter-actuator` ...
同时,我们还引入了一个外部配置文件`ProxoolConf.xml`,用于设置Proxool的具体参数,如最大连接数、最小连接数、超时时间等。 `ProxoolConf.xml`配置示例如下: ```xml <driver-url>jdbc:mysql://localhost:...
spring-2 演示了外部配置文件的引入(connection),spel(spring el)表达式 ,静态工厂方式及实例工厂方式及factorybean方式创建bean, spring的生命周期及BeanPostProcessor的使用,注解方式创建bean 及使用...