springboot如何配置单数据源

如果要做对应的数据操作,需要配置对应数据源,为了简单演示,这里是H2 内存数据库作为数据源,maven 需要添加如下配置

引入jdbc依赖和h2数据库

org.springframework.bootspring-boot-starter-jdbc
com.h2databaseh2runtime

修改application.properties配置文件内容如下

management.endpoints.web.exposure.include=*
spring.output.ansi.enabled=ALWAYSspring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.hikari.maximumPoolSize=5
spring.datasource.hikari.minimumIdle=5
spring.datasource.hikari.idleTimeout=600000
spring.datasource.hikari.connectionTimeout=30000
spring.datasource.hikari.maxLifetime=1800000

接下来编写主启动程序

package jls.spring.data.datasourcedemo;import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.jdbc.core.JdbcTemplate;import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;@SpringBootApplication
@Slf4j
public class DataSourceDemoApplication implements CommandLineRunner {@Autowiredprivate DataSource dataSource;@Autowiredprivate JdbcTemplate jdbcTemplate;public static void main(String[] args) {SpringApplication.run(DataSourceDemoApplication.class, args);}@Overridepublic void run(String... args) throws Exception {showConnection();showData();}/*** 显示连接信息* @throws SQLException*/private void showConnection() throws SQLException {log.info(dataSource.toString());Connection conn = dataSource.getConnection();log.info(conn.toString());conn.close();}/*** 显示数据*/private void showData() {jdbcTemplate.queryForList("SELECT * FROM FOO").forEach(row -> log.info(row.toString()));}
}

启动之后结果如下


可以看到程序正常启动,且还有结果输出

因为spring boot 2.1.1.RELEASE 启动的时候会自动执行 resource 目录下的data.sql和schema.sql,所以可以看到有数据

浏览器输入 http://localhost:8080/actuator/beans 可以看到

因为pom有

org.springframework.bootspring-boot-starter-actuator

那么Data source等一些实例是如何初始化而来的呢,可以关注如下几个类

配置 DataSource

  • DataSourceAutoConfiguration

配置 DataSourceTransactionManager

  • DataSourceTransactionManagerAutoConfiguration

配置 JdbcTemplate

  • JdbcTemplateAutoConfiguration

以上这些都是需要满足条件时才会进行配置的

数据源的配置属性介绍

  • spring.datasource.url=jdbc:h2:mem:testdb
  • spring.datasource.username=sa
  • spring.datasource.password=
  • spring.datasource.driver-class-name=

启动时初始化数据

初始化方式

  • spring.datasource.initialization-mode=always|never|embedded

数据表结构

  • spring.datasource.schema=

数据

  • spring.datasource.data=

数据源平台

  • spring.datasource.platform=h2|mysql|oracle

使用Srping 方式配置数据源

项目结构如下:


pom.xml依赖如下

5.1.3.RELEASE
org.springframeworkspring-context${spring.version}org.springframeworkspring-jdbc${spring.version}org.apache.commonscommons-dbcp2RELEASEcom.h2databaseh2RELEASEruntime

applicationContext.xml是Spring 的配置文件,内容如下


其中base-package是我们的代码所在的package路径

最后看Application类,为了方便,都写在一起

package jls.spring.data.datasourcedemo;import org.apache.commons.dbcp2.BasicDataSourceFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.Properties;@Configuration
@EnableTransactionManagement
public class DataSourceDemo {@Autowiredprivate DataSource dataSource;public static void main(String[] args) throws SQLException {ApplicationContext applicationContext =new ClassPathXmlApplicationContext("applicationContext*.xml");showBeans(applicationContext);dataSourceDemo(applicationContext);}@Bean(destroyMethod = "close")public DataSource dataSource() throws Exception {Properties properties = new Properties();properties.setProperty("driverClassName", "org.h2.Driver");properties.setProperty("url", "jdbc:h2:mem:testdb");properties.setProperty("username", "sa");return BasicDataSourceFactory.createDataSource(properties);}@Beanpublic PlatformTransactionManager transactionManager() throws Exception {return new DataSourceTransactionManager(dataSource());}private static void showBeans(ApplicationContext applicationContext) {System.out.println("applicationContext*.xml中定义的Bean:"+Arrays.toString(applicationContext.getBeanDefinitionNames()));}private static void dataSourceDemo(ApplicationContext applicationContext) throws SQLException {DataSourceDemo demo = applicationContext.getBean("dataSourceDemo", DataSourceDemo.class);demo.showDataSource();}public void showDataSource() throws SQLException {System.out.println("dataSource 对象地址:"+dataSource.toString());Connection conn = dataSource.getConnection();System.out.println("dataSource 连接信息:"+conn.toString());conn.close();}
}

运行结果如下:


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部