[Spring Study]의존성 주입

Noah97·2022년 5월 17일

SpringStudy

목록 보기
2/2
post-thumbnail

스프링의 주요 특징

  • POJO 기반의 구성
  • 의존성 주입(DI)을 통한 객체 간의 관계 구성
  • AOP(Aspect-Oriented-Programming)지원
  • 편리한 MVC 구조
  • WAS의 종속적이지 않은 개발 환경

스프링은 다른 프레임워크들과 달리 이 관계를 구성할 때 별도의 API등을 사용하지 않는 POJO(Plain Old Java Object)의 구성만으로 가능하도록 제작되어 있다. 일반적인 JAVA 코드를 이용해서 객체를 구성하는 방식을 그대로 스프링에서 사용할 수 있다는 얘기이다.

의존성 주입

 의존성이라는 것은 하나의 객체가 다른 객체 없이 제대로 된 역할을 할 수 없다는 것을 의미한다. 예컨대, 음식점이라면 서빙을 담당하는 직원이 갑자기 하루 못나오는 상황이 있어도 장사는 할 수 있지만, 주방장에게 문제가 생겨서 못 나오면 장사를 할 수 없는 일이 발생한다. 의존성은 이처럼 하나의 객체가 다른 객체의 상태에 따라 영향을 받는 것을 의미한다. 흔히 A 객체가 B 객체 없이 동작이 불가능한 상황을 A가 B에 의존적이다 라고 표현한다.

의존성 주입 테스트

레스토랑 객체를 만들고 레스토랑에서 일하는 셰프 객체를 주입하는 예제
스프링에서는 생성자를 이용한 주입과 setter 메서드를 이용한 주입으로 의존성 주입을 구현한다. 설정 방식은 주로 XML이나 어노테이션 을 이용해서 처리한다.
Restaurant.java

package org.zerock.sample;

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

import lombok.AllArgsConstructor;
import lombok.RequiredArgsConstructor;
import lombok.Setter;
import lombok.ToString;

//Setter 주입
//생성자 주입
//필드 주입
@Component
@ToString
//@AllArgsConstructor
@RequiredArgsConstructor

public class Restaurant {
	
	//@Autowired //필드 주입
	//@Setter(onMethod_ = {@Autowired}) //Setter 주입
	private final Chef chef;
}
//스프링은 객체지향을 하는 프레임워크 웹을 하는 프레임 워크는 아님 
//스프링은 servlet-context.xml은 웹과 관련된 설정을 하고 root-context.xml은 객체 지향과 관련된 설정을 한다.

Chef.java

package org.zerock.sample;

import org.springframework.stereotype.Component;

import lombok.Data;

@Component
@Data
public class Chef {

}

결과

profile
안녕하세요 반갑습니다😊

0개의 댓글