/**
*
*/
package com.soundsystem.config;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder;
import org.springframework.jndi.JndiObjectFactoryBean;
/**
* @author zhangpeng
*
*/
@Configuration
public class DatasourceConfig {
/**
* 嵌入式数据库 基于内存数据库
* 适合开发环境,让数据库处于一个给定的状态
* ****
* @return
*/
@Bean(destroyMethod = "shutdown")
@Profile("dev")
public DataSource embeddedDataSource() {
return (DataSource) new EmbeddedDatabaseBuilder().addScript("classpath:schema.sql")
.addScript("classpath:test-data.sql").build();
}
/**
* 通过jndi获取datasource 能够让容器决定该如何创建这个datasource,甚至包括切换为容器管理的连接池。
* 适合 生产环境 对于开发环境来说会增加不必要的复杂性。
* @return
*/
@Bean
public DataSource jndiDataSource() {
JndiObjectFactoryBean jndiObjectFactoryBean=new JndiObjectFactoryBean();
jndiObjectFactoryBean.setJndiName("jdbc/myds");
jndiObjectFactoryBean.setResourceRef(true);
jndiObjectFactoryBean.setProxyInterface(javax.sql.DataSource.class);
return (DataSource) jndiObjectFactoryBean.getObject();
}
/**
* 适合测试环境
* @return
*/
@Bean
public DataSource dbcpDataSource(){
BasicDataSource basicDataSource=new BasicDataSource();
basicDataSource.setUrl("");
basicDataSource.setPassword("");
basicDataSource.setUsername("");
basicDataSource.setInitialSize(20);
basicDataSource.setMaxActive(30);
return basicDataSource;
}
}
基于Spring注解的数据库获取不同DataSource的总结
最新推荐文章于 2021-09-18 20:17:54 发布