[Spring] Spring 공부 정리-1

업데이트:

실습은 Spring Quick Start:채규태 교재를 바탕으로 진행했습니다.

1. SQL문 작성

앞으로의 실습 코드 작성을 위해 데이터베이스를 만들고 테이블을 구성함.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
CREATE TABLE USERS(
	ID VARCHAR(8) PRIMARY KEY,
    PASSWORD VARCHAR(8),
    NAME VARCHAR(20),
    ROLE VARCHAR(5)
);

INSERT INTO USERS VALUES('test','test123','관리자','Admin');
INSERT INTO USERS VALUES('user1','user1','홍길동','User');

CREATE TABLE BOARD(
	SEQ INT AUTO_INCREMENT PRIMARY KEY,
    TITLE VARCHAR(200),
    WRITER VARCHAR(20),
    CONTENT VARCHAR(2000),
    REGDATE DATETIME DEFAULT current_timestamp,
    CNT INT DEFAULT 0
);

INSERT INTO BOARD(TITLE,WRITER,CONTENT) VALUES('가입인사','관리자','잘 부탁드립니다....');

2. 프로젝트 생성

Eclipse에서 File - New - Spring Legacy Project - Spring MVC Project를 누릅니다.
프로젝트 명은 “BoardWeb”, 패키지 지정은 “com.springbook.biz”로 진행했습니다.

  • src/main/webapp/WEB-INF 안의 spring, views폴더 삭제.
  • src/main/webapp/WEB-INF/web.xml을 열어
1
2
3
4
5
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee https://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
</web-app>

이렇게 web-app 태그 부분만 남기고 모두 삭제.

  • 가장 바깥에 있는 pom.xml 파일의 properties 부분의 spring framework 버전을 5.2.8로 변경
1
2
3
4
5
6
7
8
9
10
11
12
13
14
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.springbook</groupId>
	<artifactId>biz</artifactId>
	<name>BoardWeb</name>
	<packaging>war</packaging>
	<version>1.0.0-BUILD-SNAPSHOT</version>
	<properties>
		<java-version>1.6</java-version>
		<!--요부분 변경-->
		<org.springframework-version>5.2.8.RELEASE</org.springframework-version>
		<!--요부분-->
		<org.aspectj-version>1.6.10</org.aspectj-version>
		<org.slf4j-version>1.6.6</org.slf4j-version>
	</properties>

3. IoC와 AOP

스프링에서 가장 중점적으로 봐야할 부분은 IoC와 AOP입니다.
Inversion of Control. 기존의 프로젝트에서는
alt
위의 그림과 같이 B나 C에서 A를 이용하려면 new A(); 의 방식으로 구현해야했습니다.
하지만 스프링은 스프링 컨테이너가 객체를 생성해주어 B, C에서 new를 하지 않고 B,C에서 @AutoWired와 같은 태그를 이용하여 객체를 주입하게 해줍니다. 따라서 의존 관계가 아래 그림과 같이 변경되는데, 이것을 제어의 역행이라고 합니다.

Aspect Oriented Programming. 여러 메소드마다 공통적으로 등장하는 코드를 분리함으로써 응집도가 높게 개발할 수 있도록(한 함수에 그와 관련된 한 기능만 있도록!) 지원합니다.
alt

여기까지가 Spring의 구조를 지우는 작업이었습니다. 이 책에서는 Spring의 동작 과정을 이해하기 위해 뼈대를 잠시 지우고 실습을 진행합니다. 다음 포스팅부터는 구조 이해를 위한 실습을 진행하겠습니다.

댓글남기기