Я столкнулся с подобной ситуацией в одном из моих проектов, используя spring-jdbc, будет сложно написать код и поддерживать его. Вы можете использовать обычный jdbc, чтобы получить указанный объект соединения, используя параметры соединения.
package com;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Timestamp;
import org.apache.commons.lang3.exception.ExceptionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.util.Assert;
@Component
public class DB2Connection {
private static final Logger logger = LoggerFactory.getLogger(DB2Connection.class);
private static String DRIVER_NAME;
private static String VALID_QUERY;
@Value("${db.valid-query}")
public void setValidQuery(String query){
VALID_QUERY = query;
}
@Value("${db.driverName}")
public void setDriverName(String driverName){
DRIVER_NAME = driverName;
}
/**
* Getting the Database connection
* @param url url of the database
* @param userName username of the db
* @param password password of the db
* @return Connection returns DB Connection object
* */
public static Connection getConnection(final String url, final String userName, final String password){
logger.info("Getting DB Connection...");
Assert.notNull(url, "Database URL can't be null");
Assert.notNull(userName, "Database username can't be null");
Assert.notNull(password, "Database password can't be null");
Connection con = null;
try{
Class.forName(DRIVER_NAME);
con = DriverManager.getConnection(url,userName,password);
// testing for the valid connection
if(testConnection(con)){
logger.info("Valid DB Connection # Connection Tested...");
}else{
logger.info("In-Valid DB Connection...");
}
}catch(ClassNotFoundException cla){
logger.error("Class Not found exception..."+ExceptionUtils.getStackTrace(cla));
}catch(SQLException sqe){
logger.error("SQL Exception..."+ExceptionUtils.getStackTrace(sqe));
}catch(Exception exe){
logger.error("Exception occured while making DB Connection..."+ExceptionUtils.getStackTrace(exe));
}
return con;
}
/**
* Closing the java.sql.Connection class object
*
* @param con Connection object which need to be closed
*
* */
public static void close(Connection con){
logger.info("Closing the connection object...");
try {
if(con != null ){
con.close();
}
} catch (SQLException e) {
logger.error("Exception occured while closing DBConnection..."+ExceptionUtils.getStackTrace(e));
}
}
/**
* This method will test connection if proper or not
* @param con Connection object which need to be checked
* @return flag true if connection is fine, false in case of connection is wrong
* */
public static synchronized boolean testConnection(Connection con){
boolean flag = false;
logger.info("Testing the connection before providing to another process...");
ResultSet rs = null;
Statement stmt = null;
try{
stmt= con.createStatement();
// running the query for validation of the database
rs = stmt.executeQuery(VALID_QUERY);
while(rs.next()){
// if we get Timestamp as return type - valid query is successfully run in the database
Timestamp t = rs.getTimestamp(1);
if( t != null){
flag =true;
}
}
}catch(SQLException e){
logger.error("SQL Exception error..."+ExceptionUtils.getStackTrace(e));
}finally{
if(rs != null){
try {
rs.close();
} catch (SQLException e) {
logger.error("Error in closing Result Set"+ExceptionUtils.getStackTrace(e));
}
}if( stmt != null){
try {
stmt.close();
} catch (SQLException e) {
logger.error("Error in closing Statement"+ExceptionUtils.getStackTrace(e));
}
}
}
return flag;
}
}
Определите значения db.valid-query и db.driverName в файле application.properties.
Вызовите getConnection (), чтобы получить объект подключения.
Также вы можете создать свой собственный собственный привод, который может показать вам все текущие объекты соединения, которые в данный момент находятся в приложении. Дополнительный код, необходимый для поддержки текущего объекта. БД Объект соединения.