본문 바로가기

open source/maven & hudson

메이븐 + 스프링 + ibatis + 허드슨 연동 구축 3탄 - 메이븐 + 스프링 + 아이바티스

나는 메이븐은 책을 보고 지금으로 부터 1년전에 공부를 했었다..

골이란게 있었고.. 페이즈란게 있었던거 같았고.. 중앙 저장소.. 사내 저장소.. 등등의 내용이 어렴풋이 기억이 난다. 그 기억을 모두 잃어버릴까 두려워 다시 공부를 한다.

허드슨은 구글 검색을 하여 대충 실습하며 동작 방식을 아주 조금 이해 했다. 메이븐과 허드슨을 사용하여 프로젝트를 구성해 보려고 한다.


3탄. 메이븐 + 스프링 + 아이바티스


-----------------------------------------------------------------------------------------------------------------


이제 라이브러리를 추가하자. 나는 이클립스에 메이븐 플러그인이 설치 되어있다.

메이븐의 라이브러리 의존성 관리의 이점을 절실히 느낄수 있었다,

이클립스 메이븐 플러그인을 이용하여 spring-context 만 추가를 하면 spring-context 라이브러리가 의존하는 라이브러리가 자동으로 추가가 된다..

메이븐을 사용하지 않았다면 일일히 jar 파일을 찾아서 lib 경로에 넣어줬어야 한다. 그래서 내가 쓰고 싶은 라이브러리를 넣어봤다.



<결과>


1. 최종 라이브러리 dependencies ( 다른 기능이 필요하다면 다른 라이브러리도 추가하자. )

commons-dbcp, commons-pool, commons-collections 는 아이바티스에서 필요하다.

처음에 commons 들을 추가하지 않고 테스트 요청을 한 결과 sql 부분에서 Exception이 발생 하였다.

dependencies 라이브러리중 ojdbc14 를 dependencies 하려고 하면 에러가 발생할 것이다.

중앙 저장소에 저 라이브러리가 없는 이유였다. 그래서 pom.xml에 저장소를 추가 해줘야 했다.

 <!-- 레파지토리 추가 -->

<!--  오라클과 메이븐의 라이선스 문제로 메이븐 중앙 저장소에서 받을 수 없어서-->

<repositories>

  <repository>

    <id>mesir-repo</id>

    <url>http://mesir.googlecode.com/svn/trunk/mavenrepo</url>

  </repository>

</repositories>

<!-- 레파지토리 추가 끝-->

  <build>

   <plugins>

...

  </build>






2. web.xml 설정

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">

  <display-name>MavenTest</display-name>

  <welcome-file-list>

    <welcome-file>index.jsp</welcome-file>

  </welcome-file-list>

  

   <!--  encoding  -->

<filter>

         <filter-name>encodingFilter</filter-name>

         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

         <init-param>

               <param-name>encoding</param-name>

               <param-value>UTF-8</param-value>

            </init-param>

    </filter>

    <filter-mapping>

         <filter-name>encodingFilter</filter-name>

         <url-pattern>/*</url-pattern>

    </filter-mapping>

   <!--  encoding  end -->

  

   <!--  log4j  -->

<context-param>

    <param-name>log4jConfigLocation</param-name>

    <param-value>/WEB-INF/conf/log4j.xml</param-value>

</context-param>

<listener>

    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>

</listener>

<!--  log4j  end -->

  

   <!--  application context  -->

<listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>/WEB-INF/conf/applicationContext.xml</param-value>

</context-param> 

   <!--  application context  end -->

  

   <!--  dispatcher-servlet.xml  -->

   <servlet>

<servlet-name>dispatcher</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<init-param>

<param-name>contextConfigLocation</param-name>

<param-value>

/WEB-INF/conf/dispatcher-servlet.xml

</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>dispatcher</servlet-name>

<url-pattern>/</url-pattern>

</servlet-mapping>

<!--  dispatcher-servlet.xml  end -->

</web-app>



3. dispatcher-servlet.xml 설정

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:mvc="http://www.springframework.org/schema/mvc"

xmlns:p="http://www.springframework.org/schema/p"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd

http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

<context:component-scan base-package="org.thinker.mkk.controller" />

</beans>



4. applicationContext.xml 설정

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xmlns:aop="http://www.springframework.org/schema/aop"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:p="http://www.springframework.org/schema/p"

xmlns:task="http://www.springframework.org/schema/task"

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd

http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd">


<!-- 아이바티스 설정 -->

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">

<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>

<property name="url" value="jdbc:oracle:thin:@IP:1521:ora11"/>

<property name="username" value="scott"/>

<property name="password" value="tiger"/>

</bean>

<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">

<property name="configLocation" value="WEB-INF/conf/sqlmapConfig.xml"/>

<property name="dataSource" ref="dataSource"/>

</bean>

<!-- 아이바티스 설정  끝-->


<bean id="testDAO" class="org.thinker.mkk.dao.TestDAO" p:sqlMapClient-ref="sqlMapClient" />

</beans>



5. sqlmapConfig.xml 설정

<?xml version="1.0" encoding="UTF-8" ?>


<!DOCTYPE sqlMapConfig      

    PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"      

    "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">


<sqlMapConfig>

<settings 

enhancementEnabled="true" 

useStatementNamespaces="true" />

  

<sqlMap resource="org/thinker/mkk/sql/test.xml" />

</sqlMapConfig>



6. 전체 구조





테스트 내용은 select sysdate from dual 로 시간을 리턴해 준다.


7. 테스트 결과 성공




오늘은 새벽 3시가 지났다. 메이븐의 강력한 기능들이 너무나 많지만 다른 기능들은 몇 주 후로 미루기로 하고 

다음시간에는 허드슨을 파악해보자.

빨리 자야지..회사가려면...