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> |
4. Server 추가 및 path 설정. (tomcat 8) path설정은 선택.
2. MySQL 설정
1. pom.xml에 dependency 추가로 관련 라이브러리 다운
<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> |
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> |
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와 트랜잭션 설정은 이후에 ..