-
Spring MVC 개인프로젝트 - #1 프로로젝트 생성과 마이바티스+오라클 연동기타/Spring MVC 2021. 3. 18. 16:39
위 게시글은 아래 글을 참고해서 만들었습니다
kuzuro.blogspot.com/2018/04/blog-post_7.html
스프링에 오라클과 마이바티스 연동
개발자, 웹개발, PC앱개발, Java, C#, HTML/CSS, JavaScript, Spring, ASP, .NET
kuzuro.blogspot.com
할 때 마다 연결하는 것에 애를 먹어 한 번 정리하기로 했다 ㅠㅠ
디비 연결하는 게 아직도 헷갈려서 할 때마다 찾아보는데 할때마다 오류와 만남 ㅋㅋ
1. Spring Legacy Project를 만든다
(프로젝트 만들고 이름 설정하는 건 쉬우니까 건너 뛰기할 때 마다 연결하는 것에 애를 먹어 한 번 정리하기로 했다 ㅠㅠ
디비 연결하는 게 아직도 헷갈려서 할 때마다 찾아보는데 할때마다 오류와 만남 ㅋㅋ
1. Spring Legacy Project를 만든다
(프로젝트 만들고 이름 설정하는 건 쉬우니까 건너 뛰기
2. 자바 버전 1.8로 셋팅
프로젝트 우클릭 → Properties → Project Facets에서 자바 버전을 1.8로 맞춰주기
pom.xml 에서도 1.8로 맞춰주기
안 그러면 maven 업데이트 때마다 버전이 돌아간다
이걸 몰라서 나는 할 때마다 고쳐줌..ㄷㄷ
3. 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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.ria0617</groupId> <artifactId>controller</artifactId> <name>ria0617</name> <packaging>war</packaging> <version>1.0.0-BUILD-SNAPSHOT</version> <properties> <java-version>1.8</java-version> <org.springframework-version>4.3.8.RELEASE</org.springframework-version> <org.aspectj-version>1.6.10</org.aspectj-version> <org.slf4j-version>1.6.6</org.slf4j-version> <m2eclipse.wtp.contextRoot>/</m2eclipse.wtp.contextRoot> </properties> <!-- 오라클 JDBC 드라이버를 가져오기 위해 리포지토리를 추가합니다. --> <repositories> <repository> <id>oracle</id> <url>http://maven.jahia.org/maven2</url> </repository> </repositories> <dependencies> <!-- Spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${org.springframework-version}</version> <exclusions> <!-- Exclude Commons Logging in favor of SLF4j --> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${org.springframework-version}</version> </dependency> <!-- AspectJ --> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>${org.aspectj-version}</version> </dependency> <!-- Logging --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${org.slf4j-version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> <version>${org.slf4j-version}</version> <scope>runtime</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${org.slf4j-version}</version> <scope>runtime</scope> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.15</version> <exclusions> <exclusion> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> </exclusion> <exclusion> <groupId>javax.jms</groupId> <artifactId>jms</artifactId> </exclusion> <exclusion> <groupId>com.sun.jdmk</groupId> <artifactId>jmxtools</artifactId> </exclusion> <exclusion> <groupId>com.sun.jmx</groupId> <artifactId>jmxri</artifactId> </exclusion> </exclusions> <scope>runtime</scope> </dependency> <!-- @Inject --> <dependency> <groupId>javax.inject</groupId> <artifactId>javax.inject</artifactId> <version>1</version> </dependency> <!-- Servlet --> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- 여기 아래부터 추가 된 소스 --> <!-- 스프링에서 JDBC 를 사용하기 위한 라이브러리 입니다. --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${org.springframework-version}</version> </dependency> <!-- 오라클 JDBC 드라이버 --> <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>12.1.0.2</version> </dependency> <!-- Test --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!-- spring-test --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${org.springframework-version}</version> <scope>test</scope> </dependency> <!-- log4jdbc-log4j2-jdbc4 --> <dependency> <groupId>org.bgee.log4jdbc-log4j2</groupId> <artifactId>log4jdbc-log4j2-jdbc4</artifactId> <version>1.16</version> </dependency> <!-- MyBatis 라이브러리 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.1</version> </dependency> <!-- 마이바티스와 스프링 연동을 위한 라이브러리 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.0</version> </dependency> </dependencies> <build> <plugins> <plugin> <artifactId>maven-eclipse-plugin</artifactId> <version>2.9</version> <configuration> <additionalProjectnatures> <projectnature>org.springframework.ide.eclipse.core.springnature</projectnature> </additionalProjectnatures> <additionalBuildcommands> <buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand> </additionalBuildcommands> <downloadSources>true</downloadSources> <downloadJavadocs>true</downloadJavadocs> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.5.1</version> <configuration> <source>1.8</source> <target>1.8</target> <compilerArgument>-Xlint:all</compilerArgument> <showWarnings>true</showWarnings> <showDeprecation>true</showDeprecation> </configuration> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.2.1</version> <configuration> <mainClass>org.test.int1.Main</mainClass> </configuration> </plugin> </plugins> </build> </project>
4. src/main/resources에 log4jdbc.log4j2.properties파일을 생성
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
5. src/main/webapp/WEB-INF/spring/root-context.xml 파일을 열고
Namespaces 탭을 선택 후 beans, context, jdbc, mybatis-spring을 체크한다.
혹시 이클립스에 Namespaces 탭이 안보이는 경우는
WIndow>Pergerences<Install/Update<Available Software Sites 로 간다음
ADD 를 누르고 이클립스 공식 홈페이지에서 가장 높은 버젼 ex) 2021-03 을 확인한 후
Name: 2021-03
Location: download.eclipse.org/releases/2021-03/
추가 하고 확인 한 다음 재시작 후 마켓에서 installed에서 sts를 업데이트 해주면 된다.
이 방법을 몰라 수동으로 늘 Namespaces를 썼었다
물론 최신 버전으로 깔아도 되긴하지만 깔아놓은 설정 날아가는게 싫어서 찾다보니 알게 되었다
그리고 아래 소스를 추가한다
<?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:jdbc="http://www.springframework.org/schema/jdbc" xmlns:mybatis-spring="http://mybatis.org/schema/mybatis-spring" xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.3.xsd http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring-1.2.xsd http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd"> <!-- Root Context: defines shared resources visible to all other web components --> <!-- 오라클 접속 --> <bean class="org.springframework.jdbc.datasource.DriverManagerDataSource" id="dataSource"> <property name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy" /> <property name="url" value="jdbc:log4jdbc:oracle:thin:@localhost:1521/XE" /> <property name="username" value="계정아이디" /> <property name="password" value="계정비밀번호" /> </bean> <!-- Mybatis 연동 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:/mybatis-config.xml" /> <property name="mapperLocations" value="classpath:mappers/**/*Mapper.xml" /> </bean> <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" destroy-method="clearCache"> <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg> </bean> </beans>
6. src/main/resources에 mybatis-config.xml파일을 생성하고 아래의 코드를 추가
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> </configuration>
7. src/main/resources에 mappers 폴더를 생성하고, 그 폴더에 testMapper.xml을 생성한 뒤 아래의 코드를 추가
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.test.mappers.testMapper"> </mapper>
8. jar 파일을 복사해준다
오라클이 설치된 경로에서 ojdbc6.jar 파일을 복사한다
아래 경로에 붙여넣어준다
사실 왜 넣어줘야 하는지는 공부 부족으로 아직 모르겠다 ㅠㅠ
C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext C:\Program Files\Java\jre1.8.0_171\lib\ext
그리고 여기에도 복사 붙여 넣기
ojdbc6.jar 우클릭해서 Bulid Path가 나오면 추가해주고
나오지 않으면 위에서 클릭한 다음 ojdbc6.jar 복사해준 경로에 가서 추가해준다
8. 그리고 Add Library 눌러서 JUnit4도 추가해주기!
이건 테스트 용으로 필요한 라이브러리이다
9. src/test/java → com.test.controller 내부에
MyTest.java 파일(클래스)를 생성하고 아래의 코드를 추가
참고로 클래스 이름 test는 피한다 @Test 때문에 같은 이름으로 하면 오류가 나더라
package com.ria0617.controller; import java.sql.Connection; import javax.inject.Inject; import javax.sql.DataSource; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations ={"file:src/main/webapp/WEB-INF/spring/**/root-context.xml"}) public class myTest { //오라클 디비 연결 테스트 @Inject private DataSource ds; @Inject private SqlSessionFactory sqlFactory; @Test public void test() throws Exception { try (Connection conn = ds.getConnection()) { System.out.println(conn); } catch (Exception e) { e.printStackTrace(); } } @Test public void factoryTest() { System.out.println(sqlFactory); } @Test public void sessionTest() throws Exception { try (SqlSession session = sqlFactory.openSession()) { System.out.println(session); } catch (Exception e) { e.printStackTrace(); } } }
10. 메서드 이름 또는 내부에서 우클릭 → Run As → JUnit을 선택
이렇게 결과가 초록불이면 성공!
'기타 > Spring MVC' 카테고리의 다른 글
Spring MVC 개인프로젝트 - #2 이클립스 프로젝트와 깃허브 연동 (0) 2021.03.18 스프링 - 컨트롤러를 이용해 view jsp 페이지를 여는 방법 (0) 2021.02.03 스프링 namespace 목록 (2) 2021.01.26