전자정부프레임워크 멀티 DB 문자 관련 2개 DB사용하기

전자 정부 프레임워크에 DB를 추가해서 특정 게시판에 특정 시설선택으로 글 작성 시 담당자에게 문자 발송요청건이 생겼네요. 

메인 db를 티베로를 사용하고 있는데 문자 발송은 mysql이라 부랴부랴 하게 되었어요. 

일단 전자정부프레임워크 db2개 관련으로 검색을 하였는데요.

https://www.egovframe.go.kr/home/sub.do?menuNo=37#

 

실행환경 - 예제 다운로드 | 표준프레임워크 포털 eGovFrame

처리중입니다. 잠시만 기다려주십시오.

www.egovframe.go.kr

여기를 안내해주고 예제 소스도 보여주었어요. 

db설정을 3개의 파일로 나누어서 설정을 해주는 소스였는데 저는 2곳으로 나누어서 설정을 하였네요. 

context-datasource.xml,context-mybatis.xml,context-transaction.xml중에서
context-datasource.xml,context-transaction.xml 에만 설정을 했어요.
 
기전전자정부프레임워크는 /src/main/resources/egovframework/egovProps/globals.properties 여기에 db정보를 저장해놓고 사용하던데 그렇게 하지 않고 따로 추가했어요. 

context-datasource.xml에 추가한 내용은 

	<!-- SMS DB 설정  -->
	<beans>   	
	<bean id="dataSource2" class="org.apache.commons.dbcp2.BasicDataSource">	
		<property name="driverClassName" value="net.sf.log4jdbc.DriverSpy"></property>
		<property name="url" value="주소"></property>
		<property name="username" value="아디"></property>
		<property name="password" value="비번"></property>
		<property name="initialSize" value="10" />
        <property name="maxTotal" value="100" />
        <property name="maxIdle" value="100" />
        <property name="minIdle" value="10" />
        <property name="maxWaitMillis" value="5000" />
	</bean>
	
	<bean id="sqlSessionFactory2" class="org.mybatis.spring.SqlSessionFactoryBean">		
		<property name="dataSource" ref="dataSource2" />
		<property name="configLocation" value="classpath:/egovframework/mapper/config/mapper-config.xml" />		
		<property name="mapperLocations" value="classpath:/egovframework/mapper/first/**/*Mapper.xml"></property>
		                                                                   				
	</bean>

	<bean id="transactionManager2"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource2"></property>
	</bean>	
	<bean id="sqlSession2" class="org.mybatis.spring.SqlSessionTemplate"
		destroy-method="clearCache">
		<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory2"></constructor-arg>
	</bean>
	
	</beans>

간단히 db를 추가해주었구요.. aop관련설정으로 

context-transaction.xml  아래와 같이 수정해 주었어요. 

	<tx:annotation-driven transaction-manager="transactionManager2"/>

이렇게 하고 나니 별문제 없이 프로젝트가 실행이 되었어요.  이제 서비스를 만들어 볼게요. 

일단 commondata클래스를 만들고요.

import java.util.LinkedHashMap;

public class CommonData extends LinkedHashMap {
	public void put(String key, Object value){
		super.put(key, value);
	}

	public String get(String key) {
		if(super.get(key)!=null)
		{
			return super.get(key).toString();
		}
		else
		{
			return null;
		}		
	}
	
	public Object getObj(String key) {
		return super.get(key);
	}
}

이걸 기반으로 하는 commonDAO

import java.util.List;
import java.util.Map;

import 삭제.CommonData;


public interface commonDAO {  
  public List<Map<String, Object>> selectlist(CommonData in_data , String sql_id) throws Exception;
  public CommonData select(CommonData in_data , String sql_id) throws Exception;
  public int listSearchCount(CommonData in_data , String sql_id) throws Exception;
  public int insert(CommonData in_data , String sql_id) throws Exception ;
  public int update(CommonData in_data , String sql_id) throws Exception;
  public int delete(CommonData in_data , String sql_id) throws Exception; 
  public CommonData selectone(CommonData in_data , String sql_id) throws Exception;
  public String selectstr(CommonData in_data , String sql_id) throws Exception;
  public Long selectLong(CommonData in_data , String sql_id) throws Exception;
  
}

 

 crssms_commonDAOImpl 내용인데요. 

import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.inject.Inject;

import org.apache.ibatis.session.SqlSession;
import org.springframework.stereotype.Repository;

import 삭제.CommonData;


@Repository
public class crssms_commonDAOImpl  implements commonDAO
{
	@Inject
	@Resource(name="sqlSession2")
	private SqlSession session;
	private String namespace = "";
	@Override
	public int insert(CommonData in_data , String sql_id) throws Exception {
	    return session.insert(namespace + sql_id, in_data);
	}
	@Override
	public int update(CommonData in_data , String sql_id) throws Exception {
		return session.update(namespace + sql_id, in_data);
	}
	@Override
	public int delete(CommonData in_data , String sql_id) throws Exception {
		return session.update(namespace + sql_id, in_data);
	}
	@Override
	public int listSearchCount(CommonData in_data, String sql_id) throws Exception {
		// TODO Auto-generated method stub
	    return session.selectOne(namespace + sql_id, in_data);
	}
	@Override
	public CommonData selectone(CommonData in_data, String sql_id) throws Exception {
		// TODO Auto-generated method stub
		return session.selectOne(namespace + sql_id, in_data);
	}
	@Override
	public String selectstr(CommonData in_data, String sql_id) throws Exception {
		// TODO Auto-generated method stub
		return session.selectOne(namespace + sql_id, in_data);
	}
	@Override
	public List<Map<String, Object>> selectlist(CommonData in_data, String sql_id) throws Exception {
		return session.selectList(namespace + sql_id, in_data);
	}
	@Override
	public CommonData select(CommonData in_data, String sql_id) throws Exception {
		// TODO Auto-generated method stub
		return (CommonData) session.selectList(namespace + sql_id, in_data);
	}
	@Override
	public Long selectLong(CommonData in_data, String sql_id) throws Exception {
		// TODO Auto-generated method stub
	    return session.selectOne(namespace + sql_id, in_data);
	}
	
}

common_Service 내용인데요.

import java.util.List;
import java.util.Map;

import 삭제.CommonData;





public interface common_Service {
	  public List<Map<String, Object>> selectlist(CommonData in_data , String sql_id) throws Exception;
	  public CommonData select(CommonData in_data , String sql_id) throws Exception;
	  public int listSearchCount(CommonData in_data , String sql_id) throws Exception;
	  public int insert(CommonData in_data , String sql_id) throws Exception ;
	  public int update(CommonData in_data , String sql_id) throws Exception;
	  public int delete(CommonData in_data , String sql_id) throws Exception; 
	  public CommonData selectone(CommonData in_data , String sql_id) throws Exception;
	  public String selectstr(CommonData in_data , String sql_id) throws Exception;
	  public Long selectLong(CommonData in_data, String sql_id) throws Exception;	
}

Crssms_ServiceImpl 내용인데요

import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import 삭제.CommonData;
import 삭제.persistence.crssms_commonDAOImpl;





@Service
public class Crssms_ServiceImpl implements common_Service {
	
	@Autowired 
	private crssms_commonDAOImpl dao;	
	
	@Override
	public List<Map<String, Object>> selectlist(CommonData in_data, String sql_id) throws Exception {
	
		return dao.selectlist(in_data, sql_id);
	}

	@Override
	public CommonData select(CommonData in_data, String sql_id) throws Exception {
	
		return dao.select(in_data, sql_id);
	}

	@Override
	public int listSearchCount(CommonData in_data, String sql_id) throws Exception {
	
		return dao.listSearchCount(in_data, sql_id);
	}
	@Override
	public int insert(CommonData in_data, String sql_id) throws Exception {
	
		return dao.insert(in_data, sql_id);		
	}

	@Override
	public int update(CommonData in_data, String sql_id) throws Exception {
	
		return dao.update(in_data, sql_id);
	}

	@Override
	public int delete(CommonData in_data, String sql_id) throws Exception {
	
		return dao.delete(in_data, sql_id);
	}

	@Override
	public CommonData selectone(CommonData in_data, String sql_id) throws Exception {
	
		return dao.selectone(in_data, sql_id);
	}

	@Override
	public String selectstr(CommonData in_data, String sql_id) throws Exception {
	
		return dao.selectstr(in_data, sql_id);
	}
	@Override
	public Long selectLong(CommonData in_data, String sql_id) throws Exception {
	
		return dao.selectLong(in_data, sql_id);
	}

}

이렇고 추가한 mybatis파일은 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="Common_Mapper">
   
	
	<!-- 문자발송 관련 공통 쿼리 처리 기존 쿼리 및 경로 모두 수정할것!! -->
	<insert id="SDK_SMS_SEND">
				INSERT INTO SDK_SMS_SEND (USER_ID, SCHEDULE_TYPE, SUBJECT, SMS_MSG, NOW_DATE, SEND_DATE, CALLBACK, DEST_COUNT, DEST_INFO) VALUES (
						                  '_crs' , 0      , '비밀',#{sMsg}, date_format(now(), '%Y%m%d%H%i%S'),date_format(now(), '%Y%m%d%H%i%S'),#{sMEM_Mobile},'1',
						                  CONCAT('name^',#{sMobile}))
	</insert>
	<insert id="SDK_MMS_SEND_INSERT">
				INSERT INTO SDK_MMS_SEND (USER_ID, SCHEDULE_TYPE, SUBJECT, MMS_MSG, NOW_DATE, SEND_DATE, CALLBACK, DEST_COUNT, DEST_INFO) VALUES (
						                  '_crs' , 0      , '비밀',#{sMsg}, date_format(now(), '%Y%m%d%H%i%S'),date_format(now(), '%Y%m%d%H%i%S'),#{sMEM_Mobile},'1',
						                  CONCAT('name^',#{sMobile}))
						                  
						                  
	</insert>	
</mapper>

context-datasource.xml  설정한곳을 봐서 알겠지만  파일위치는 

/src/main/resources/egovframework/mapper/first/Common_Mapper.xml

이렇습니다.  사용할 땐 이런 식으로 선언해서 사용합니다. 

import 삭제.dto.CommonData;
import 삭제.service.Crssms_ServiceImpl;

@Autowired
private Crssms_ServiceImpl sms_service;



중략 ...
				String sMEM_Mobile = "보내는 번호";
				String sMobile="받는번호";
		    	String sMsg = "메세지";
		    	String sName = "담당자";
                CommonData dto = new CommonData();
                 			dto.put("sMobile", sMobile);
							dto.put("sMEM_Mobile", sMEM_Mobile);
							dto.put("sMsg", sMsg);
                            sms_service.insert(dto, "Common_Mapper.SDK_SMS_SEND");

이렇게 해서 db를 하나 추가해서 문자 발송까지 정리해 보았습니다. 

수고하세요.

블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,

스프링 부트 자바 8버전 지원 POM.XML파일 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
	    <groupId>org.springframework.boot</groupId>
	    <artifactId>spring-boot-starter-parent</artifactId>
	    <version>2.6.2</version>
	</parent>
	<groupId>com.iwillsoft</groupId>
	<artifactId>ex001</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>war</packaging>
	<name>ex001</name>
	<description>TEST</description>
	<properties>
		<java.version>1.8</java.version>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web-services</artifactId>
		</dependency>
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>3.0.3</version>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>com.microsoft.sqlserver</groupId>
			<artifactId>mssql-jdbc</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>com.mysql</groupId>
			<artifactId>mysql-connector-j</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>com.oracle.database.jdbc</groupId>
			<artifactId>ojdbc11</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.mariadb.jdbc</groupId>
			<artifactId>mariadb-java-client</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.postgresql</groupId>
			<artifactId>postgresql</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-tomcat</artifactId>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter-test</artifactId>
			<version>3.0.3</version>
			<scope>test</scope>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>me.meseoul10</groupId>
	<artifactId>Standard_erp</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>war</packaging>

	<name>Standard_erp</name>
	<description>micro_erp</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.4.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.3.2</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-oauth2</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-tomcat</artifactId>
			<scope>provided</scope>
		</dependency>
		<dependency>
		    <groupId>org.apache.tomcat.embed</groupId>
		    <artifactId>tomcat-embed-jasper</artifactId>
		</dependency>
		<dependency>
		    <groupId>javax.servlet</groupId>
		    <artifactId>jstl</artifactId>
		</dependency>
		
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-security</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.security</groupId>
			<artifactId>spring-security-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
		    <groupId>org.springframework.security</groupId>
		    <artifactId>spring-security-taglibs</artifactId>
		    <version>5.0.7.RELEASE</version>
		</dependency>
		<!-- webflux -->
		<dependency>
		  <groupId>org.springframework.boot</groupId>
		  <artifactId>spring-boot-starter-webflux</artifactId>
		</dependency>
		
	  
		
		<!-- log4jdbc -->
		<dependency>
		    <groupId>org.bgee.log4jdbc-log4j2</groupId>
		    <artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
		    <version>1.16</version>
		</dependency>
		
		<!-- 파일업로드 다운로드. -->
		<!-- 아파치.. -->
		<dependency>
		    <groupId>org.apache.poi</groupId>
		    <artifactId>poi</artifactId>
		    <version>3.13</version>
		</dependency>
		<dependency>
		    <groupId>org.apache.poi</groupId>
		    <artifactId>poi-ooxml</artifactId>
		    <version>3.13</version>
		</dependency>
		<dependency>
		    <groupId>org.apache.commons</groupId>
		    <artifactId>commons-collections4</artifactId>
		    <version>4.0</version>
		</dependency>
		<!-- Apache Commons IO -->
		<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
		<dependency>
		    <groupId>commons-io</groupId>
		    <artifactId>commons-io</artifactId>
		    <version>2.6</version>
		</dependency>
		<dependency>
			<groupId>org.imgscalr</groupId>
			<artifactId>imgscalr-lib</artifactId>
			<version>4.2</version>
		</dependency>
		
		<dependency>
			<groupId>com.googlecode.json-simple</groupId>
			<artifactId>json-simple</artifactId>
			<version>1.1</version>
		</dependency>
		<!-- 압축파일 -->
		<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-compress -->
		<dependency>
		    <groupId>org.apache.commons</groupId>
		    <artifactId>commons-compress</artifactId>
		    <version>1.15</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
		<dependency>
		    <groupId>commons-codec</groupId>
		    <artifactId>commons-codec</artifactId>
		    <version>1.11</version>
		</dependency>
		
		
				


		<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
		<dependency>
			<groupId>commons-fileupload</groupId>
			<artifactId>commons-fileupload</artifactId>
			<version>1.3.2</version>
		</dependency>
		
		<dependency>
	    	<groupId>org.aspectj</groupId>
	    	<artifactId>aspectjweaver</artifactId>
	    	<version>1.6.1</version>
		</dependency>
		
		<dependency>
		    <groupId>org.apache.commons</groupId>
		    <artifactId>commons-lang3</artifactId>
		    <version>3.4</version>
		</dependency> 
		
		<!-- https://mvnrepository.com/artifact/org.apache.tika/tika-core -->
		<dependency>
		    <groupId>org.apache.tika</groupId>
		    <artifactId>tika-core</artifactId>
		    <version>1.20</version>
		</dependency>
				
		
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>


	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Finchley.SR1</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>
</project>

 

블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,