您好,欢迎访问一九零五行业门户网

springboot采用多数据源对JdbcTemplate进行配置的方法

本篇文章给大家带来的内容是关于springboot采用多数据源对jdbctemplate进行配置的方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
springboot多数据源配置,代码如下
datasourceconfig
package com.rookie.bigdata.config;import org.springframework.beans.factory.annotation.qualifier;import org.springframework.boot.context.properties.configurationproperties;import org.springframework.boot.jdbc.datasourcebuilder;import org.springframework.context.annotation.bean;import org.springframework.context.annotation.configuration;import org.springframework.context.annotation.primary;import org.springframework.jdbc.core.jdbctemplate;import javax.sql.datasource;/** * @author * @date 2018/10/10 */@configurationpublic class datasourceconfig { @bean(name = "primarydatasource") @qualifier("primarydatasource") @configurationproperties(prefix="spring.datasource.primary") public datasource primarydatasource() { return datasourcebuilder.create().build(); } @bean(name = "secondarydatasource") @qualifier("secondarydatasource") @primary @configurationproperties(prefix="spring.datasource.secondary") public datasource secondarydatasource() { return datasourcebuilder.create().build(); } @bean(name = "primaryjdbctemplate") public jdbctemplate primaryjdbctemplate( @qualifier("primarydatasource") datasource datasource) { return new jdbctemplate(datasource); } @bean(name = "secondaryjdbctemplate") public jdbctemplate secondaryjdbctemplate( @qualifier("secondarydatasource") datasource datasource) { return new jdbctemplate(datasource); }}
studentserviceimpl
package com.rookie.bigdata.service;import com.rookie.bigdata.domain.student;import org.springframework.beans.factory.annotation.autowired;import org.springframework.beans.factory.annotation.qualifier;import org.springframework.jdbc.core.jdbctemplate;import org.springframework.stereotype.service;/** * @author * @date 2018/10/9 */@servicepublic class studentserviceimpl implements studentservice { @autowired @qualifier("primaryjdbctemplate") private jdbctemplate jdbctemplate; @autowired @qualifier("secondaryjdbctemplate") private jdbctemplate jdbctemplate2; /** * 采用第一个暑假源进行插入数据 * @param student */ @override public void create(student student) { jdbctemplate.update("insert into student(stu_no,name,age)value (?,?,?)", student.getstuno(), student.getname(), student.getage()); } /** * 第一个数据源进行插入数据 * @param stuno */ @override public void deletebyno(integer stuno) { jdbctemplate.update("delete from student where stu_no=?", stuno); } /** * 第二个数据源进行查询数据 * @param stuno * @return */ @override public integer querybystuno(integer stuno) { return jdbctemplate2.queryforobject("select count(1) from student", integer.class); }}
配置文件 application.properties
spring.datasource.primary.url=jdbc:mysql://localhost:3306/springbootspring.datasource.primary.username=rootspring.datasource.primary.password=rootspring.datasource.primary.driver-class-name=com.mysql.jdbc.driverspring.datasource.secondary.url=jdbc:mysql://localhost:3306/springbootspring.datasource.secondary.username=rootspring.datasource.secondary.password=rootspring.datasource.secondary.driver-class-name=com.mysql.jdbc.driver
测试代码如下
package com.rookie.bigdata.service;import com.rookie.bigdata.domain.student;import org.junit.test;import org.junit.runner.runwith;import org.springframework.beans.factory.annotation.autowired;import org.springframework.boot.test.context.springboottest;import org.springframework.test.context.junit4.springrunner;/** * @author liuxili * @date 2018/10/10 */@runwith(springrunner.class)@springboottestpublic class studentserviceimpltest { @autowired private studentserviceimpl studentservice; @test public void create1() throws exception { student student = new student(); student.setstuno(1l); student.setname("张三"); student.setage(23); studentservice.create(student); } @test public void deletebyname1() throws exception { studentservice.deletebyno(1); } @test public void querybystuno1() throws exception { system.out.println(studentservice.querybystuno(1)); }}
在运行的时候会出现如下异常问题,运行失败,报出java.lang.illegalargumentexception: jdbcurl is required with driverclassname.异常
后来经过查资料,发现出现该问题的原因是由于springboot版本的问题,本实例采用的springboot版本为2.0.5,如果将版本改为1.5以前的版本就不会出现如上的问题,其实解决上面的异常主要有如下两种解决方案
方案一:
按照如下方案进行修改application.properties配置文件,如下:修改完成后,上面的异常不会再出现
spring.datasource.primary.jdbc-url=jdbc:mysql://localhost:3306/springbootspring.datasource.primary.username=rootspring.datasource.primary.password=rootspring.datasource.primary.driver-class-name=com.mysql.jdbc.driverspring.datasource.secondary.jdbc-url=jdbc:mysql://localhost:3306/springbootspring.datasource.secondary.username=rootspring.datasource.secondary.password=rootspring.datasource.secondary.driver-class-name=com.mysql.jdbc.driver
方案二:
原有的application.properties配置文件不进行修改,修改datasourceconfig类中的信息,如下:修改完成后,异常也不会再出现能够正常运行
application.properties
spring.datasource.primary.url=jdbc:mysql://localhost:3306/springbootspring.datasource.primary.username=rootspring.datasource.primary.password=rootspring.datasource.primary.driver-class-name=com.mysql.jdbc.driverspring.datasource.secondary.url=jdbc:mysql://localhost:3306/springbootspring.datasource.secondary.username=rootspring.datasource.secondary.password=rootspring.datasource.secondary.driver-class-name=com.mysql.jdbc.driver
datasourceconfig
package com.rookie.bigdata.config;import org.springframework.beans.factory.annotation.qualifier;import org.springframework.boot.autoconfigure.jdbc.datasourceproperties;import org.springframework.boot.context.properties.configurationproperties;import org.springframework.context.annotation.bean;import org.springframework.context.annotation.configuration;import org.springframework.context.annotation.primary;import org.springframework.jdbc.core.jdbctemplate;import javax.sql.datasource;/** * @author * @date 2018/10/10 */@configurationpublic class datasourceconfig { @bean(name = "primaryjdbctemplate") public jdbctemplate primaryjdbctemplate( @qualifier("primarydatasource") datasource datasource) { return new jdbctemplate(datasource); } @bean(name = "secondaryjdbctemplate") public jdbctemplate secondaryjdbctemplate( @qualifier("primarydatasource") datasource datasource) { return new jdbctemplate(datasource); } @primary @bean(name = "primarydatasourceproperties") @qualifier("primarydatasourceproperties") @configurationproperties(prefix = "spring.datasource.primary") public datasourceproperties primarydatasourceproperties() { return new datasourceproperties(); } @bean(name = "secondarydatasourceproperties") @qualifier("secondarydatasourceproperties") @configurationproperties(prefix = "spring.datasource.secondary") public datasourceproperties secondarydatasourceproperties() { return new datasourceproperties(); } @primary @bean(name = "primarydatasource") @qualifier("primarydatasource") @configurationproperties(prefix = "spring.datasource.primary") public datasource primarydatasource() { return primarydatasourceproperties().initializedatasourcebuilder().build(); } @bean(name = "secondarydatasource") @qualifier("secondarydatasource") @configurationproperties(prefix = "spring.datasource.secondary") public datasource secondarydatasource() { return primarydatasourceproperties().initializedatasourcebuilder().build(); }}
至此,springboot 采用多数据源对jdbctemplate进行配置完美解决
以上就是springboot采用多数据源对jdbctemplate进行配置的方法的详细内容。
其它类似信息

推荐信息