본문 바로가기

카테고리 없음

[코드로 배우는 스프링 웹 프로젝트] ch02 스프링 특징과 의존성 주입

728x90
반응형

1. 의존성

   ▷ 하나의 객체가 다른 객체가 없이 제대로 된 역할을 수행하지 못하도록 하는 것

   ▷ 위와 같이 하나의 존재를 더 추가해 주입하는 역할을 합니다.

 

◎ pom.xml에 추가되는 라이브러리

<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-test</artifactId>
	<version>${org.springframework-version}</version>
</dependency>
<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<version>1.18.0</version>
</dependency>
<dependency>
	<groupId>log4j</groupId>
	<artifactId>log4j</artifactId>
	<version>1.2.17</version>
</dependency>


<!-- Test -->
<dependency>
	<groupId>junit</groupId>
	<artifactId>junit</artifactId>
	<version>4.12</version>
	<scope>test</scope>
</dependency>

 

◎ 예제 클래스 생성

   ▷ ex00 → org.codehows.sample 패키지 생성 → Restaurant, Chef 클래스 생성


1. Chef 클래스

package org.codehows.sample;

import org.springframework.stereotype.Component;

import lombok.Data;

@Component
@Data
public class Chef {
}


2. Restaurant 클래스

package org.codehows.sample;

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

import lombok.Data;
import lombok.Setter;

@Component
@Data
public class Restaurant {
	@Setter(onMethod_ = @Autowired)
	private Chef chef;
}


▷ Restaurant 객체는 Chef 타입의 객체를 필요로 한다는 의미입니다.
@Component는 스프링에서 해당 클래스를 관리해야 하는 대상임을 표시하는 것을 스프링에 전달
@Setter는 자동으로 setChef()를 컴파일시 생성

 

◎ onMethod_ 에러 발생시

   ▷ sts 프로그램 종료 → 탐색기: c:\user\codepc\.m2 숨김파일 보기 → .m2 폴더 삭제 sts 다시 실행

   ▷ 해당 프로젝트 우클릭 → Meaven → Update → 다시 m2가 생기고 에러가 사라지면 오류 해결된 것입니다.

 

 

2. XML을 통한 의존성 주입

   ▷ 스프링은 클래스에서 객체를 생성하고 객체들의 의존성에 대한 처리까지 내부에서 시행

   ▷ 스프링에서 관리되는 객체를 빈(Bean)이라 하고 XML, Java를 통해 설정할 수 있음

 

◎ src → main → webapp → WEB-INF → spring → root-context.xml

   ▷ root-context.xml은 스프링 프레임워크에서 관리해야 하는 객체(Bean)를 설정하는 설정 파일

   ▷ Namespaces

 

   ▷ Source

<?xml version="1.0" encoding="UTF-8"?>
	...(생략)...		
	<context:component-scan base-package="org.codehows.sample">
	</context:component-scan>
</beans>

 

   ▷ Beans Graph


위와 같이 객체 2개가 설정된 것을 확인할 수 있습니다.

 

 

스프링의 의존성을 이용하는 방법들을 알아보았습니다.

 

프레임 워크를 이용하려면 객체끼리 직접 연결하는게 아닌 스프링을 이용해 신호를 주고 받는 것 같네요!

 

확실한 개념은 책을 몇 번 더 읽어봐야겠어요!

 

많은 분들의 피드백은 언제나 환영합니다!  많은 댓글 부탁드려요~~

 

728x90
반응형