본문 바로가기
Java/Spring

Spring Legacy Project part 1. (Lombok, DI)

by HoneyIT 2021. 2. 24.

스프링 프로젝트를 진행하기 앞서 스프링의 주요 특징을 알아봅시다.

 

스프링의 주요 특징

POJO(Plain Old Java Object) 기반의 구성

- 자바의 언어 사양 외에 어떠한 제한에 묶이지 않은 자바 오브젝트

- 기술적으로 어렵기 때문에 미리 정의된 어노테이션을 보통 사용

 

의존성 주입(DI)을 통한 객체 간의 관계 구성

- 하나의 객체가 다른 객체의 의존성을 제공하는 기술

- 밖에서 생성하여 넣어주는 것

 

AOP(Aspect Oriented-Programming) 지원

- 로깅이나 인증 시스템과 같은 횡단 관심사와 분리하여 모듈성을 증가시키는 프로그래밍 패러다임

 

MVC(Model-View-Controller) 구조

소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴

 


Lombok

getter/setter, toString(), 생성자 등을 자동으로 생성해주는 라이브러리입니다.

(projectlombok.org/download)

 

CMD로 다운로드 받은 Lombok 위치로 가서 Lombok.jar를 실행합니다.

javar -jar lombok.jar

 

IDE를 찾을 수 없다고 나오네요 ㅎㅎ;;

 

Specify location을 클릭하여 STS의 위치를 찾아주었습니다.

찾았으면 오른쪽의 Install / Update를 클릭합니다.

 

lombok이 생겼네요 ㅎㅎ 제대로 설치되었습니다.

 

pom.xml에 Lombok 라이브러리를 추가해줍니다.

<!-- Lombok lib -->
<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<version>1.18.18</version>
</dependency>

 

Lombok 오류가 발생할 수 있으니 버전에 맞는 log4j버전을 1.2.17로 변경해줍니다.

Log4j : 프로그램을 작성하는 도중에 로그를 남기기 위해 사용되는 자바 기반 로깅 유틸리티 (디버그용 도구로 사용)

잘 변경된 것을 확인할 수 있습니다.

Test

테스트는 junit을 사용하여 진행합니다.

 

spring-test가 있는지 확인하고 없으면 추가해줍니다.

<!-- Spring-Test -->
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-test</artifactId>
	<version>${org.springframework-version}</version>
</dependency>

DI(Dependancy Injection)

 

Chef.java

package org.zerock.ample;

import org.springframework.stereotype.Component;

import lombok.Data;

@Component
@Data //데이터 저장
public class Chef {

}

Spring에서 자동으로 생성해주는 어노테이션들이 있습니다.

@Controller - URL 맵핑

@Service - 처리 부분

@Reqository - DB 관련

@Component

@RestController

@Advice

 

Restaurant.java

package org.zerock.ample;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import lombok.Data;
import lombok.Setter;

@Component
@Data //getter setter을 대신함
public class Restaurant {
	@Setter(onMethod_ = @Autowired)
	// lombok의 자동생성된 setter로 DI적용
	private Chef chef;
	
}

 

src > main > webapp > WEB-INF > spring 에 있는 root-context.xml을 확인해봅시다.

 

오른쪽 마우스 클릭 > Open with > Spring Config Editor로 열어줍니다.

 

sts 4 버전에서는 위의 에디터가 없기 때문에 Spring 환경설정 part 1.에서 나온 방법으로 패키지를 설치해야 합니다.

(설치해도 안나오면 삭제하고 재설치하세요.)

 

 

열리면 Namespaces에서 context를 추가로 체크해줍니다.

 

xmlns:context="http://www.springframework.org/schema/context"

 

 

beans에 추가됩니다.

 

자동으로 생성하기 위해 해당 위치에 context:component-scan을 추가합니다. (클릭!)

 

기본 패키지의 org.zerock.sample 밑의 모든 패키지를 찾게 됩니다.

즉, beans안에 만들어 놓은 @Component를 가진 Chef와 Restaurant를 자동으로 생성합니다.

 

beans 그래프를 보면 잘 생성된 것을 확인할 수 있습니다.