본문 바로가기

Programming/Spring

[Spring] Spring 개발 환경 세팅 (2/3)

728x90

1. Prologue

2. 개발환경 세팅

 A. 개발환경 항목별 버전 체크

 B. 개발환경 세팅 과정

  1) JDK 설치

  2) Eclipse 설치 및 Spring 다운로드

  3) Tomcat 설정

  4) Spring 프로젝트 생성

   * 라이브러리 버전 수정

   * 서버 세팅

https://immose93.tistory.com/8 까지의 내용

 

[Spring] Spring 개발 환경 세팅 (1/3)

스프링을 접한지 얼마 되지 않은 스프링 신생아나 다름없기 때문에 DB에서 영화 정보를 가져와 화면에 나타내는 간단한 예제 프로젝트를 해보며 익히기로 했다. '스프링은 개발 환경 세팅이 절반이다'라는 말이..

immose93.tistory.com


  5) MariaDB, MySQL Workbench 설치 및 샘플 DB 구축

SQL developer로 MySQL Workbench 사용

     (MariaDB를 시각적으로나 기능적으로 편하게 사용할 수 있도록 하는 툴이라 생각하면 됨)

theater 스키마 생성 movie 테이블 생성 INSERT문 작성하여 data 추가 SELECT문으로 추가한 data 확인

 

movie 테이블 생성
SQL문 작성 후 실행
SELECT문으로 추가한 데이터 확인

 

  6) Spring, MariaDB, MyBatis 연동, 데이터 조회

pom.xml 수정
Mybatis가 MariaDB에 접근해서 데이터를 가져올 수 있도록 관련 의존성(dependency)을 주입
로그를 남기기 위한 라이브러리로 log4jdbc-log4j2-jdbc4.1도 의존성 주입
<dependencies></dependencies> 사이 영역에 추가
<!-- DB -->
<!-- Maria DB -->
<dependency>
	<groupId>org.mariadb.jdbc</groupId>
	<artifactId>mariadb-java-client</artifactId>
	<version>2.0.3</version>
</dependency>

<!-- DBCP 데이터베이스 풀 커넥션 -->
<dependency>
	<groupId>commons-dbcp</groupId>
	<artifactId>commons-dbcp</artifactId>
	<version>1.4</version>
</dependency>

<!-- Spring JDBC -->
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-jdbc</artifactId>
	<version>4.3.9.RELEASE</version>
</dependency>

<!-- Mybatis -->
<dependency>
	<groupId>org.mybatis</groupId>
	<artifactId>mybatis</artifactId>
	<version>3.4.4</version>
</dependency>

<dependency>
	<groupId>org.mybatis</groupId>
	<artifactId>mybatis-spring</artifactId>
	<version>1.3.1</version>
</dependency>

<!-- Mybatis log -->
<!-- https://mvnrepository.com/artifact/org.bgee.log4jdbc-log4j2/log4jdbc-log4j2-jdbc4.1 -->
<dependency>
	<groupId>org.bgee.log4jdbc-log4j2</groupId>
	<artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
	<version>1.16</version>
</dependency>
root-context.xml 수정
root-context.xml : 웹 이외의 부분을 셋팅하기 위해 존재
위치 : src/main/webapp/WEB-INF/spring/root-context.xml
datasource : DB 연결 정보
(url은 '로컬주소/스키마이름'으로 이루어져 있고, username과 password에 ID와 password를 값으로 입력)
로그 확인을 위해 property에 log4jdb를 추가했음

sqlSessionFactory : 트랜잭션 관리와 쓰레드 처리, DB 연결 및 종료를 관리하는 영역
-> /mybatis 경로에 mybatis 설정 파일인 mybatis-config.xml이, /mybatis/sql 경로에 mybatis mapper 파일이 있음을 명시
<bean id="dataSource"
	class="org.springframework.jdbc.datasource.DriverManagerDataSource">
	<property name="driverClassName"
		value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy"></property>
	<property name="url"
		value="jdbc:log4jdbc:mariadb://127.0.0.1:3306/theater" />
	<property name="username" value="root" />
	<property name="password" value="root" />
</bean>

<bean id="sqlSessionFactory"
	class="org.mybatis.spring.SqlSessionFactoryBean">
	<property name="dataSource" ref="dataSource"></property>
	<property name="configLocation"
		value="classpath:/mybatis/mybatis-config.xml"></property>
	<property name="mapperLocations"
		value="classpath*:/mybatis/sql/*.xml"></property>
</bean>
 
<bean id="sqlSession"
	class="org.mybatis.spring.SqlSessionTemplate">
	<constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg>
</bean>
 
<!-- <mybatis-spring:scan base-package="com.moses.dao" /> -->
<context:component-scan base-package="com.moses.dao"></context:component-scan>
<context:component-scan	base-package="com.moses.service"></context:component-scan>
위 코드를 추가하면
<context:component-scan base-package="com.moses.dao"></context:component-scan>
<context:component-scan base-package="com.moses.service"></context:component-scan>
부분에 The prefix “context” for element “context:component-scan” is not bound. 에러 발생
해결 방법 : Namespaces 탭에서 context를 체크하여 아래 빨간 박스 안의 코드가 추가되도록 함으로써 bound 관련 에러 해결

context bound 에러와 MariaDB id, pw값 설정

mybatis-config.xml 작성
mybatis-config.xml : 마이바티스 설정 파일
위치 : src/main/resources/mybatis/mybatis-config.xml
mybatis 폴더 생성 → mybatis-config.xml 생성 → 아래 코드 복붙
typeAliases : VO를 선언하여 mybatis/sql/ 하위의 쿼리들을 실행할 때, resultType, parameterType에 full package name을 쓰지 않고 선언한 alias의 이름만 사용하여 VO를 주고 받을 수 있도록 해줌
<?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>
	<typeAliases>
		<typeAlias type="com.moses.vo.MovieVO" alias="movieVO" />
	</typeAliases>
</configuration>
mybatis 폴더 생성시 위 처럼 패키지 구조로 표시될 수 있음
Eclipse에서 폴더가 패키지 구조로 표시될 때 해결 방법 : https://ojava.tistory.com/116
 

eclipse에서 폴더가 패키지 구조로 표시될 때

eclipse에서 새롭게 Maven 프로젝트를 생성해서 환경설정을 진행하다가 이상한 현상을 발견하여 해당 내용에 대해 해결하는 방법을 포스팅하고자 한다. eclipse에서 폴더가 패키지 구조로 표시될 때 환경설정이 완..

ojava.tistory.com

logback.xml 작성
logback.xml : 자바 오픈소스 로깅 프레임워크인 logback의 설정 파일
위치 : src/main/resources/logback.xml
logback.xml 생성 → 아래 코드 복붙
Logback Manual : http://logback.qos.ch/manual/index.html
level : ERROR < WARN < INFO < DEBUG < TRACE (해당 레벨 이하의 내용은 다 로그를 찍음)
logback 사용법 : https://jeong-pro.tistory.com/154
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
	<include resource="org/springframework/boot/logging/logback/base.xml"/>
    
	<!-- log4jdbc-log4j2 -->
	<logger name="jdbc.sqlonly"     level="DEBUG" />
	<logger name="jdbc.sqltiming"     level="INFO" />
	<logger name="jdbc.audit"         level="WARN" />
	<logger name="jdbc.resultset"     level="ERROR" />
	<logger name="jdbc.resultsettable" level="ERROR" />
	<logger name="jdbc.connection"     level="INFO" />
 
</configuration>
log4jdbc.log4j2.properties 작성
위치 : /src/main/resources/log4jdbc.log4j2.properties
log4jdbc.log4j2.properties 파일 생성 -> 아래 코드 복붙
log4jdbc.drivers=org.mariadb.jdbc.Driver
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4jdbc.dump.sql.maxlinelength=0
test.xml 작성
위치 : /src/main/resources/mybatis/sql/test.xml
test.xml 생성 → 아래 코드 복붙
DB에 쿼리할 SQL문 작성
resultType=“movieVO” : 데이터를 movieVO에 담겠다는 것을 의미
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 
<mapper namespace="com.moses.mybatis.sql.test">
	<select id="selectMovie" resultType="movieVO">
		SELECT MOVIE_NAME, DIRECTOR, TYPES FROM MOVIE
	</select>
</mapper>

 

mybatis와 log 관련된 파일 구조