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包及配置多資料來源內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!