Spring DI

·2022년 4월 18일
0

Spring

목록 보기
1/8

Spring DI 용어

Bean

  • 스프링이 IoC 방식으로 관리하는 오브젝트.
  • 스프링이 직접 그 생성과 제어를 담당하는 오브젝트만을 Bean이라고 한다.

BeanFactory

  • 스프링이 IoC를 담당하는 핵심 컨테이너.
  • Bean을 등록, 생성, 조회, 반환하는 기능을 담당.
  • 일반적으로 BeanFactory를 바로 사용하지 않고, 이를 확장한 ApplicationContext를 사용한다.

ApplicationContext

  • BealnFactory를 확장한 IoC 컨테이너이다.
  • Bean을 등록하고 관리하는 기본적인 기능은 BeanFactory와 동일하다.
  • 스프링이 제공하는 각종 부가서비스를 추가로 제공한다.
  • BeanFactory라고 부를때는 주로 빈의 생성과 제어의 관점에서 이야기하는 것이고, ApplicationContext라고 할 때는 스프링이 제공하는 Application 지원 기능을 모두 포함하는 것이다.

설정정보 / 설정 메타정보

  • 스프링의 설정 정보란 ApplicationContext 또는 BeanFactory가 IoC를 적용하기 위해 사용하는 메타정보를 말한다.
  • 설정정보는 IoC 컨테이너에 의해 관리되는 Bean 객체를 생성하고 구성할 때 사용된다.

Spring Framework

  • 스프링 프레임워크는 IoC 컨테이너, ApplicationContext를 포함해서 스프링이 제공하는 모든 기능을 통틀어 말할 때 주로 사용한다.

Bean 생성범위

Singleton Bean

  • 스프링 빈은 기본적으로 싱글톤으로 만들어 짐.
  • 그러므로, 컨테이너가 제공하는 모든 빈의 인스턴스는 항상 동일.
  • 컨테이너가 항상 새로운 인스턴스를 반환하게 하고 싶을 경우 Scope를 prototype으로 설정해야 한다.
@Component("memberService")
@Scope("singleton") // @Scope("prototype")
public class MemberServiceImpl implements MemberService{
	@Override
    public int registerMember(){
    	return 0;
    }

}

스프링 설정 메타 정보를 표현하는 방식

XML

  • 단순하며 사용하기 쉬움, 가장 많이 사용하는 방식.
  • 태그를 통해 세밀한 제어 가능.

Annotation

  • Application의 규모가 커지고, 빈의 개수가 많아질 경우 XML 파일을 관리하는 것이 번거로움.
  • Bean으로 사용될 클래스에 특별한 Annotation을 부여해 주면 자동으로 빈 등록 가능.
  • 오브젝트 빈 스캐너로 빈 스캐닝을 통해 자동 등록
    (빈 스캐너는 기본적으로 클래스 이름의 첫 글자만 소문자로 바꾼 것을 빈의 ID로 사용.)

Spring Bean 의존 관계 설정.

멤버 변수에 직접 정의하는 경우 Setter 함수를 만들지 않아도 된다.

  • @Resource : 멤버 변수, Setter method에 사용 가능.
    타입에 맞춰서 연결.

  • @Autowired : Spring에서만 사용 가능.
    정밀한 DI가 필요한 경우 유용하다.
    타입에 맞춰서 연결.

  • @Inject : 프레임워크에 종속적이지 않음.
    javax.inject-xxx.jar 가 필요함.
    이름으로 연결.

@Service("gbService")
public class GuestBookServiceImpl implements GuestBookService {
	@Autowired
   //  @Qualifier("gbDao") // 동일 타입이 여러개일 경우
	private GuestBookDao guestBookDao;
}
profile
SSAFY 7기

0개의 댓글