Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

UpDown Dev Story

Spring Bean의 정의와 여러가지 등록방법 본문

Spring

Spring Bean의 정의와 여러가지 등록방법

updown 2021. 5. 21. 04:37

스프링 빈이란?

Spring IOC 컨테이너가 관리하는 자바 객체를 빈(Bean) 이라는 용어로 부른다.

빈 등록 방법

빈 등록 방법에는 크게 3가지 방법이 있다

XML을 이용한 빈 등록

위와 같은 방법으로 xml 설정파일에 직접 등록할 수 있다.

하지만 xml을 통한 빈 등록 방식은 2가지 정도의 문제점이 있다.

  1. 빈의 성격 구분을 하기 힘들어진다.
  2. 어플리케이션의 크기가 조금만 커져도 빈의 양이 늘어 관리하기 버거울 수 있다.

그래서 스프링에서는 클래스에 특정 애노테이션을 부여하고 부여한 클래스를 찾아 자동으로 빈등록을 해주는 빈 스캐닝 이라는 기능을 제공해준다. (@ComponentScan)

Annotation을 이용한 빈 등록

빈 등록 Annotation

@Component 컴포넌트를 나타내는 일반적인 스테리오 타입으로 태그와 동일한 역할을 함
@Repository 퍼시스턴스 레이어, 영속성을 가지는 속성(파일, 데이터베이스)을 가진 클래스
@Service 서비스 레이어, 비지니스 로직을 가진 클래스
@Controller 프리젠테이션 레이어, 웹 어플리케이션에서 웹 요청과 응답을 처리하는 클래스
@Configuration 스프링 설정 정보에서 사용

@Repository, @Service, @Controller는 더 특정한 유즈케이승 대한 @Component의 구체화된 형태이다.

빈 의존관계 주입 Annotation

@Autowired 정밀한 의존관계 주입이 필요한 경우에 유용.
@Autowired는 프로퍼티, setter 메서드, 생성자, 일반 메서드에 적용 가능.
의존하는 객체를 주입할 때 주로 Type을 이용
@Resource 어플리케이션에서 필요로 하는 자원을 자동 연결할 때 사용
@Resource는 poperty, setter 메서드에 적용 가능
의존하는 객체를 주입할 때 주로 Name을 이용
@Value 단순한 값을 주입할 때 사용되는 annotation.
@Value(“Spring”)은 와 동일한 역할
@Qualifier @Qualifier는 @Autowired annotation과 같이 사용.
@Autowired는 타입으로 찾아서 주입하므로, 동일 타입의 Bean 객체가
여러 개 존재할 때 특정 Bean을 찾기 위해 사용

@Component를 통해 자동으로 Bean을 등록하고, @Autowired로 의존관계를 주입받는 어노테이션을 클래스에서 선언하여 사용했을 경우에는 해당 클래스가 위치한 특정 패키지를 Scan하기 위한 설정을 XML에 해야함.

다음과 같은 태그를 넣어 주기만 하면 dev.wedding.kr.test패키지 하위에 존재하는 빈 스캔 대상(스테레오 타입 내오테이션 클래스)을 빈 으로 등록해준다.

자바 코드로 빈 등록

스프링 3.0 부터 기존의 xml 방식을 벗어나 java로 설정 파일을 작성할 수 있게 되었다.

java로 설정파일을 작성하게 되면 IDE의 기능을 최대한 활용할 수 있기 때문에
작성하기도 쉽고, 이해하기도 쉬워진다.

게다가 IDE에서 문법 체크를 지원해주므로 실수할 일도 줄어들게 된다.

래스 레벨에서는 @Configuration을 붙이고, 메서드 레벨에서는 @Bean애노테이션을 붙이면 된다.

@Bean이 붙은 메서드명이 각각의 bean의 이름이 된다. 리턴되는 객체를 스프링 컨테이버가 빈으로 활용한다.

Comments