코드로 배우는 스프링 웹 프로젝트 책 보면서 해봄!!!
Part 2 기본적인 기능의 게시물 관리
Part 2는 실제로 아주 단순한 crud(등록, 수정, 삭제, 조회) 게시물 관리를 제작합니다.
Part 2에서 만들어지는 게시물 관리는 다음과 같은 기능을 가지고 있습니다.
- 게시물의 등록, 수정, 삭제, 조회
- 페이지 처리
- 검색 처리
01 등록, 수정, 삭제, 조회 기능의 구현
모든 게시물 관리의 시작 형태는 등록(create), 조회(read), 수정(update), 삭제(delete)를 기준으로 합니다.(이하 crud라는 약어를 사용합니다.) 여기에 반드시 하나가 더 추가되는 것이 화면상에 데이터의 목록을 보여주는 리스트 기능이라고 할 수 있습니다.
1.1 개발 목표 인식
일반적인 경우, 개발 순서는 ‘뒤에서 앞으로’의 순서가 많습니다. 즉, 1) 가장 먼저 데이터베이스 관련 부분을 개발하고, 2) 컨트롤러와 비즈니스 영역을 개발한 후 3)마지막으로 화면 쪽을 개발하게 됩니다.
1.2 각 영역에 따른 개발의 준비
1.3 프로젝트의 생성
프로젝트는 ‘ex01’이라는 이름으로 sts 상의 ‘spring project’를 이용합니다. 본격적인 개발에 앞서 필요한 라이브러리 등은 아래와 같습니다.
- Mysql 드라이버
- Spring-test 모듈
- Mybatis 모듈
- Mybatis-spring 모듈
프로젝트의 패키지는 ‘org.zerock.controller’라는 패키지로 설정해서 작성합니다.
File -> new -> spring legacy project
작성된 프로젝트의 모습은 아래와 같다.
Ex01 프로젝트의 pom.xml을 사용해서 jdk의 버전과 스프링의 버전을 수정하기
<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> </properties> |
프로젝트의 속성 역시 jdk 1.8에 맞도록 변경합니다.
프로젝트에 필요한 라이브러리를 pom.xml을 이용해서 추가
추가된 라이브러리는 mysql, 드라이버, mybatis, mybatis-spring, log4jdbc-log4j2 관련 설정입니다.
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${org.springframework-version}</version> </dependency>
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${org.springframework-version}</version> </dependency>
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.41</version> </dependency>
<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>
<dependency> <groupId>org.bgee.log4jdbc-log4j2</groupId> <artifactId>log4jdbc-log4j2-jdbc4</artifactId> <version>1.16</version> </dependency> |
테스트 올바르게 진행하기 위해서 junit의 버전과 servlet의 버전 변경
ð 빨간부분 작성
마지막으로 설정과 관련된 파일들을 추가합니다. 파일들의 +위치는 ‘src/main/resources’ 폴더를 이용합니다. Log4jdbc.log4j2.properties 파일과 logback.xml, mybatis-config.xml 파일을 복사해서 추가합니다.
Ctrl + shift + r 을 이용해 검색하면 파일을 쉽게 찾을 수 있음.
1.4 개발 전 준비 – 데이터베이스 관련
1.4.1 DataSource의 등록
Datasource는 mybatis를 사용하기 위해서 반드시 root-context.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" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- Root Context: defines shared resources visible to all other web components -->
<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:mysql://127.0.0.1:3306/book_ex?useSSL=false"></property> <property name="username" value="zerock"></property> <property name="password" value="zerock"></property> </bean> </beans>
|
1.4.2 datasource의 테스트
datasource의 테스트는 반드시 필요하다!!!
Test 폴더 내의 DataSourceTest
package org.zerock.test;
import java.sql.Connection;
import javax.inject.Inject; import javax.sql.DataSource;
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 DataSourceTest {
@Inject private DataSource ds;
@Test public void testConection() throws Exception { try (Connection con = ds.getConnection()) { System.out.println(con); } catch (Exception e) { e.printStackTrace(); } }
} |
<결과>
실행 결과는 정상적으로 Connection 객체가 만들어지는 것을 확인할 수 있어야 합니다.
코드로 배우는 스프링 웹 프로젝트 책 보면서 해봄!!!
'JAVA > spring' 카테고리의 다른 글
spring homapage (0) | 2019.06.14 |
---|---|
Spring CreateTest (0) | 2019.06.13 |
Spring+mybatis (0) | 2019.06.05 |
spring + mybatis + mysql - 2 (0) | 2019.06.04 |
spring + MyBatis + MySQL - 1 (0) | 2019.06.03 |
댓글