공부/Spring

Spring 개발환경 설정 정리[spring,Mybatis(mysql),tomcat]

JangGiraffe 2016. 4. 8. 17:41

0. 프로젝트 생성

new>project>spring project> spring mvc project

* spring starter project를 사용하지 않는다.

** STS는 기본적으로 maven을 내장하고 있기 때문에 프로젝트 생성 시 바로 maven을 이용해서 스프링 관련 라이브러리를 다운한다. 

 

- 책에 나온 Spring Starter Project와 Spring Proejct 비교.

 

Spring Starter Project(Spring Boot) 

Spring Project 

 장점

 

. 별도의 설정이 필요 없다.

. WAS없이 실행이 가능하다.

. 로딩 시간이 짧아서 테스트 하기에 편하다. 

 

 

. 현재까지 실무에서 많이 사용되고 있다.

. 다양한 자료가 존재한다.

. 기존 프로젝트를 이해하는데 도움이 된다.

. 모든 버전의 스프링에서 사용할 수 있다. 

 단점

. 기존의 설정과 다른 방식으로 사용한다.

 . JSP 설정 등은 별도로 해야 한다.

. 초반  테스트 환경 구성 등이 어렵다.

. WAS와 연동하는 경우 결과 확인에 많은 리소스를 소모한다. 

 

스프링 MVC 프로젝트 템플릿의 구조

src/main/java : 개발되는 java 코드의 경로

src/main/resources : 서버가 실행될 때 필요한 파일들의 경로

src/main/webapp/WEB-INF/spring : spring 설정 파일의 경로

src/main/webapp/WEB-INF/web.xml :

root-context.xml 을 Root Spring Container로 지정해 모든 필터와 서블렛들이 공유하도록 한다. 또한 servlet-context 를 이용해 DispatcherServlet 클래스가 Front-end Controller 로 동작할 수 있도록 해 준다. 다시 말해 요청을 처리할 수 있도록 해 준다는 뜻이다.

src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml :

CSS나 Image 등 각종 리소스가 있는 statis 폴더를 지정하고. View 의 파일 타입과 폴더를 지정한다.

View 지원 bean 설정

ex) Controller

src/main/webapp/WEB-INF/spring/root-context.xml :

View 지원을 제외한 bean 설정
ex) Service / Repository(DAO) / DB / log 등등

src/main/webapp/WEB-INF/view : jsp 파일의 경로

pom.xml :Maven의 설정파일

 

 

1. 프로젝트 생성 이후 기본설정

1. 프로젝트 우클릭 > properties >Project Facets에서 JAVA 버전을 1.8로 설정

2. properties > Java Compiler 에서 JAVA 버전을 1.8로 변경

3. Spring framework 버전 변경 - pom.xml [ 수정 후 메이븐 라이브러리에서 변경사항 확인]

        <properties>

                 <java-version>1.8</java-version>

                 <org.springframework-version>4.1.7.RELEASE</org.springframework-version>

                 <org.aspectj-version>1.6.10</org.aspectj-version>

                 <org.slf4j-version>1.6.6</org.slf4j-version>
        </properties> 

 

4. Server 추가 및 path 설정. (tomcat 8) path설정은 선택.

 

2. MySQL 설정

1. pom.xml에 dependency 추가로 관련 라이브러리 다운

                <dependency>
                         <groupId>mysql</groupId>
                         <artifactId>mysql-connector-java</artifactId>
                         <version>5.1.36</version>
                 </dependency>

 

3. Mybatis 설정   

1. pom.xml에 dependency 추가 [spring-jdbc 역시MySQL과의 연동을 위해 필요하다]

                  <!--  MyBatis -->       

                 <dependency>

                         <groupId>org.mybatis</groupId>

                         <artifactId>mybatis</artifactId>

                         <version>3.2.8</version>

                 </dependency>

                

                 <!-- MyBatis-Spring -->

                 <dependency>

                         <groupId>org.mybatis</groupId>

                         <artifactId>mybatis-spring</artifactId>

                         <version>1.2.2</version>

                 </dependency>

                

                 <!-- spring-jdbc -->

                 <dependency>

                         <groupId>org.springframework</groupId>

                         <artifactId>spring-jdbc</artifactId>

                         <version>${org.springframework-version}</version>

                 </dependency>

                

                 <!-- spring-test -->

                 <dependency>

                         <groupId>org.springframework</groupId>

                         <artifactId>spring-test</artifactId>

                         <version>${org.springframework-version}</version>

                 </dependency>

 

 

2. root-context.xml의 Namespace에 aop,beans,context,jdbc,mybatis-spring 추가
   [pom.xml에서 추가한 라이브러리가 모두 설치된 후 root-context.xml의 하위탭 Namespace에서 추가 가능

3. root-content.xml의 Source에 MySQL과 연결을 담당하는 DataSource 설정하기.

        <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">

                 <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>

                 <property name="url" value="jdbc:mysql://127.0.0.1:3306/ 스키마 이름"></property>

                 <property name="username" value=" 아이디"></property>

                 <property name="password" value=" 비밀번호"></property>
       </bean> 

4. SqlSessionFactory 객체 생성하기. (root-context.xml)

Connection을 생성하고 처리하는 SqlSessionFactory의 존재. DB와의 연결 및 SQL 실행에 대한 모든 것을 가진 중요한 객체임

property configLocation은 mybatis설정파일의 경로임

        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

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

                 <property name="configLocation" value="classpath:/mybatis-config.xml"></property>

        </bean> 

5. mybatis-config.xml 추가 (경로는 src/main/resources) .

mybatis의 설정파일로 아직 설정사항 없음.

 <?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>

 

6. (선택) pom.xml - JSON 형식으로 반환받기 위해 필요한 라이브러리 추가.

 <!--  JSON형식으로 반환받기 위해 필요한 라이브러리  -->

               <dependency>

                      <groupId>com.fasterxml.jackson.core</groupId>

                      <artifactId>jackson-databind</artifactId>

                      <version>2.5.4</version>
               </dependency>

 

3-2 Mapper 생성

1. src/main/resources/mappers/(사용할이름)Mapper.xml

  typeAliases는 나중에 편의를 위해 추가해주는거로 지금 안해줘도 됨..

 

 <?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>

               <package name="org.zerock.domain"/>

       </typeAliases>

</configuration>

 

 

2. myBatis-Spring에서 XML Mapper 인식시키기. 해당 경로에 ~~Mapper.xml 파일을 모두 Mapper로 인식

   root-context.xml sqlSessionFactory에 property 추가

 

<property name="mapperLocations" value="classpath:mappers/**/*Mapper.xml"></property> 

 

3. SqlSessionTemplate 설정

SqlSessionTemplate는 mybatis-spring 라이브러리에서 제공하는 클래스로 DB와 연결을 맺고 작업을 완료한 후에 close()처리를 대신 해주는 라이브러리다. 추가로 기본적인 트랜잭션 관리나 쓰레드 처리의 안전성(?)을 보장해준다..

root-context.xml에 추가

 

        <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" destroy-method="clearCache">

                 <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg>

        </bean> 

 

 

4. 스프링에 빈 등록

@Repository 애노테이션을 해당 패키지에서 인식시키게 하기 위한 설정을 추가함.

root-context.xml

 

<context:component-scan base-package="org.zerock.persistence"></context:component-scan>

 

경로는 dao 들어있는 패키지 경로로 나중에 위와 같이 service 포함된 경로도 추가해줘야함. 

 

 

 

=============

 

AOP와 트랜잭션 설정은 이후에 ..

반응형