Spring Boot项目添加外部Jar包以及配置多数据源的完整步骤

前言

最近项目需要和Oracle数据库进行交互,然后我从Maven中央仓库下载数据库驱动jar包,但怎么都下不下来,我到Oracle官网上一看,我去,居然不让用Maven直接下(大学时候用过Oracle,很久远的事情了0rz),没办法我还是直接下载jar包放到我的项目里面吧。SpringBoot项目引入外部jar包是非常方便的,包含打引入外部jar等操作。

我的做法如下:

首先在src同级目录建一个lib文件夹,将第三方jar包放到这个文件内,比如我将ojdbc6.jar 这个jar包放到这个地方。

接着我们需要在pom.xml文件里配置jar的maven坐标,不过这个坐标比较特殊,我们需要直接定位到我们上一步添加的文件,而不是从Maven仓库里面去下载,以ojdbc6.jar为例,配置依赖如下:

<dependency>
 <groupId>com.oracle</groupId>
 <artifactId>ojdbc6</artifactId>
 <version>12.1.0.2.0</version>
 <scope>system</scope>
 <systemPath>${project.basedir}/lib/ojdbc6.jar</systemPath>
</dependency>

这里比较特殊的是systemPath,常见的Maven坐标是没有这个的,这里面直接指定该jar的相对路径(相对项目的根目录),这样Maven在编译的时候就不会从中央仓库里面去下载该jar包了。但只配置这个还不行,还需要配置SpringBoot编译时插件属性includeSystemScope,具体如下:

<plugin>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-maven-plugin</artifactId>
 <configuration>
 <includeSystemScope>true</includeSystemScope>
 </configuration>
</plugin>

上面配置完毕,我们就可以直接执行mvn clean install进行打包,然后我们查看打好的jar包里面包含的jar包,会发现ojdbc6.jar这个包已经正确被包含进去了。

由于对接的项目比较老,要与其数据库进行交互,而且数据库类型不一致,所以我们的项目需要支持多数据源(接口平台),这个还是非常好配置的,SpringBoot给我们提供了多数据源配置的方案,并且每个数据源对应一个JdbcTemplate,这样就方便很多,具体配置如下:

application.properties文件内配置多数据源信息

首先在application.properties或者yml文件内配置多数据源信息,具体配置如下:

# ds1数据源配置
spring.datasource.ds1.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.ds1.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.ds1.url=jdbc:mysql://localhost:3306/zz?useUnicode=true&characterEncoding=utf8
spring.datasource.ds1.username=zz
spring.datasource.ds1.password=zz

# ds2数据源配置
spring.datasource.ds2.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.ds2.url=jdbc:oracle:thin:@localhost:1521:orcl
spring.datasource.ds2.username=system
spring.datasource.ds2.password=050508

指定数据源与配置信息

上面我们配置好了数据源,但是已经不是SpringBoot默认的数据源配置信息了,所以我们还要指定不同的数据源实例对应哪个配置信息,配置如下:

/**
 * 多数据源配置
 */

public class DataSourceConfig {

 /**
  * ds1数据源配置
  *
  * @return 配置信息
  */

 (name = "ds1DataSourceProperties")
 (prefix = "spring.datasource.ds1")
 public DataSourceProperties ds1DataSourceProperties() {
  return new DataSourceProperties();
 }

 /**
  * ds1数据源
  *
  * @param dataSourceProperties 配置信息
  * @return 数据源实例
  */

 (name = "ds1DataSource")
 public DataSource ds1DataSource(@Qualifier("ds1DataSourceProperties") DataSourceProperties dataSourceProperties) {
  return dataSourceProperties.initializeDataSourceBuilder().build();
 }

 /**
  * ds2数据源配置
  *
  * @return 配置信息
  */

 (name = "ds2DataSourceProperties")
 (prefix = "spring.datasource.ds2")
 public DataSourceProperties ds2DataSourceProperties() {
  return new DataSourceProperties();
 }

 /**
  * ds2数据源
  *
  * @param dataSourceProperties 配置信息
  * @return 数据源实例
  */

 (name = "ds2DataSource")
 public DataSource ds2DataSource(@Qualifier("ds2DataSourceProperties") DataSourceProperties dataSourceProperties) {
  return dataSourceProperties.initializeDataSourceBuilder().build();
 }

}

配置JdbcTemplate与数据源关系

配置完数据源信息,我们想直接用不同的JdbcTemplate来操作不同的数据库,所以我们还要创建几个JdbcTemplate实例,并且这些实例与不同的数据源进行绑定,配置信息如下:

/**
 * JdbcTemplate 多数据源配置
 *
 * @author 明山
 * @see DataSourceConfig
 */

public class JdbcTemplateDataSourceConfig {

 /**
  * ds1 JdbcTemplate 配置
  *
  * @param dataSource 数据源
  * @return JdbcTemplate
  */

 (name = "ds1JdbcTemplate")
 public JdbcTemplate jdbcTemplate(@Qualifier("ds1DataSource") DataSource dataSource) {
  return new JdbcTemplate(dataSource);
 }

 /**
  *ds2 JdbcTemplate 配置
  *
  * @param dataSource 数据源
  * @return JdbcTemplate
  */
 (name = "ds2JdbcTemplate")
 public JdbcTemplate hdwmsJdbcTemplate(@Qualifier("ds2DataSource") DataSource dataSource) {
  return new JdbcTemplate(dataSource);
 }
}

使用JdbcTemplate

配置完后,我们可以直接在具体的类中使用了,使用方式如下:

("ds1JdbcTemplate")
private JdbcTemplate ds1JdbcTemplate;

("ds2JdbcTemplate")
private JdbcTemplate ds2JdbcTemplate;

总结

到此这篇关于Spring Boot项目添加外部Jar包以及配置多数据源的文章就介绍到这了,更多相关Spring Boot项目添加外部Jar包及配置多数据源内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • springboot下配置多数据源的方法

    一.springboot 简介 SpringBoot使开发独立的,产品级别的基于Spring的应用变得非常简单,你只需"just run". 我们为Spring平台及第三方库提 供开箱即用的设置,这样你就可以有条不紊地开始.多数Spring Boot应用需要很少的Spring配置. 你可以使用SpringBoot创建Java应用,并使用 java -jar 启动它或采用传统的war部署方式.我们也提供了一个运行"spring 脚本"的命令行工具. 二.传统的Dat

  • Spring Boot 把配置文件和日志文件放到jar外部

    如果不想使用默认的application.properties,而想将属性文件放到jar包外面,可以使用如下两种方法: 只能设置全路径.因为Java -jar运行jar包时,无法指定classpath(无论通过参数还是环境变量,设置的classpath都会被覆盖). 方法1:命令行传参指定spring.config.location java -jar -Dspring.config.location=D:\zTest\config\config1.properties springbootre

  • Spring Boot多数据源及其事务管理配置方法

    准备工作 先给我们的项目添加Spring-JDBC依赖和需要访问数据库的驱动依赖. 配置文件 spring.datasource.prod.driverClassName=com.mysql.jdbc.Driver spring.datasource.prod.url=jdbc:mysql://127.0.0.1:3306/prod spring.datasource.prod.username=root spring.datasource.prod.password=123456 spring

  • Spring Boot打jar包后配置文件的外部优化配置方法

    在未进行任何处理的情况下,Spring Boot会默认使用项目中的 application.properties 或者 application.yml 来读取项目所需配置. 我这里只记录几种自己所用到的. 访问命令行属性 在默认的情况下, SpringApplication 会将任何命令行选项参数(以 - 开头 --server.port=9000)转换为 property 并添加到Spring环境当中. 例如,启动项目的时候指定端口: java -jar analysis-speech-too

  • Spring Boot 动态数据源示例(多数据源自动切换)

    本文实现案例场景: 某系统除了需要从自己的主要数据库上读取和管理数据外,还有一部分业务涉及到其他多个数据库,要求可以在任何方法上可以灵活指定具体要操作的数据库. 为了在开发中以最简单的方法使用,本文基于注解和AOP的方法实现,在spring boot框架的项目中,添加本文实现的代码类后,只需要配置好数据源就可以直接通过注解使用,简单方便. 一配置二使用 1. 启动类注册动态数据源 2. 配置文件中配置多个数据源 3. 在需要的方法上使用注解指定数据源 1.在启动类添加 @Import({Dyna

  • Spring Boot 集成Mybatis实现主从(多数据源)分离方案示例

    本文将介绍使用Spring Boot集成Mybatis并实现主从库分离的实现(同样适用于多数据源).延续之前的Spring Boot 集成MyBatis.项目还将集成分页插件PageHelper.通用Mapper以及Druid. 新建一个Maven项目,最终项目结构如下: 多数据源注入到sqlSessionFactory POM增加如下依赖: <!--JSON--> <dependency> <groupId>com.fasterxml.jackson.core<

  • Spring Boot + Mybatis多数据源和动态数据源配置方法

    网上的文章基本上都是只有多数据源或只有动态数据源,而最近的项目需要同时使用两种方式,记录一下配置方法供大家参考. 应用场景 项目需要同时连接两个不同的数据库A, B,并且它们都为主从架构,一台写库,多台读库. 多数据源 首先要将spring boot自带的DataSourceAutoConfiguration禁掉,因为它会读取application.properties文件的spring.datasource.*属性并自动配置单数据源.在@SpringBootApplication注解中添加ex

  • 详解spring boot引入外部jar包的坑

    前言:由于项目需求,短信验证码的接口需要换成阿里大于的,但是尴尬的发现阿里大于的jar包没有maven版本的,于是便开始了一上午的操蛋引包之路.按照套路来说,自然应该是百度一波,但是百度了好久,找了好多方案之后发现,没一个有用的,而且文章的抄袭.拷贝十分严重,试了N种方案,都是错的,都没有将外部jar包打包到BOOK-INF文件夹下.最终,在第N次尝试之后,终于在打的jar包里将外部的jar包导入进来.特此记录下,防止再犯!!! 首先在新建libs文件夹(根目录或者resource目录下都可以)

  • springboot + mybatis配置多数据源示例

    在实际开发中,我们一个项目可能会用到多个数据库,通常一个数据库对应一个数据源. 代码结构: 简要原理: 1)DatabaseType列出所有的数据源的key---key 2)DatabaseContextHolder是一个线程安全的DatabaseType容器,并提供了向其中设置和获取DatabaseType的方法 3)DynamicDataSource继承AbstractRoutingDataSource并重写其中的方法determineCurrentLookupKey(),在该方法中使用Da

  • 详解Spring Boot整合Mybatis实现 Druid多数据源配置

    一.多数据源的应用场景 目前,业界流行的数据操作框架是 Mybatis,那 Druid 是什么呢? Druid 是 Java 的数据库连接池组件.Druid 能够提供强大的监控和扩展功能.比如可以监控 SQL ,在监控业务可以查询慢查询 SQL 列表等.Druid 核心主要包括三部分: 1. DruidDriver 代理 Driver,能够提供基于 Filter-Chain 模式的插件体系. 2. DruidDataSource 高效可管理的数据库连接池 3. SQLParser 当业务数据量达

随机推荐