-
생성자를 이용한 DI
Spring은 생성자를 통한 객체 주입도 지원한다.
생성자를 통한 주입을 위해 BoardServiceImpl 에 생성자를 하나 추가한다.
생성자를 통한 주입은 constructor-arg로 수행한다.
<bean id="boardService" class="com.hello.board.service.BoardServiceImpl"> <constructor-arg name="boardDao" ref="boardDao" /> </bean>
Constructor-arg : 생성자 호출을 위한 엘리먼트
name 속성 : 생성자 파라미터의 이름
ref 속성 : 생성자 파라미터에 전달될 다른 Bean의 아이디
생성자의 파라미터 개수에 맞추어 여러 개의 constructor-arg를 사용할 수도 있다.
Component-Scan / Autowired
Bean / Property / Constructor-arg 는 수동 DI
Spring은 Component-Scan을 통해 Bean 생성 및 주입이 자동으로 수행되도록 한다.
Spring3.0부터 DI같은 자바 코드와 관련된 설정을 직접 코드에서 할 수 있도록 Annotation 기능을 지원
클래스에 위 4개의 Annotation이 등록되었을 경우, 자동으로 Bean Container에 추가한다.
@Repository ➔ 주로 DB Access를 수행하는 클래스에 작성
스프링 컨테이너가 component-scan에 의해 지정한 클래스를 DAO 빈으로 자동 변환
@Service ➔ Business Logic이 포함된 클래스에 작성
스프링 컨테이너가 component-scan에 의해 지정한 클래스를 서비스 빈으로 자동 변환
@Controller ➔ Controller 클래스에 위치
스프링 컨테이너가 component-scan에 의해 지정한 클래스를 컨트롤러 빈으로 자동 변환
@Component
스프링 컨테이너가 component-scan에 의해 지정한 클래스를 빈으로 자동 변환
@Autowired 는 자동으로 클래스를 주입받도록 하는 Annotation
동일한 Interface로 등록된 클래스를 찾아 자동으로 주입
별도의 Setter나 생성자 없이 속성에 빈 주입이 가능
Component-scan과 수동 DI를 동시에 사용할 수도 있다.
'개발 > SPRING' 카테고리의 다른 글
SPRING_ DISPATCHER SERVLET 개념 및 실행 과정 (0) 2021.09.15 SPRING_ WebMVC 모델 개념 및 정의, 구성 요소 (0) 2021.09.15 SPRING_ Bean Container, 객체 의존 주입 (0) 2021.09.15 SPRING_ Spring DI interface, setter (0) 2021.09.15 SPRING_Spring DI/IoC 개념 및 정의 (0) 2021.09.15 댓글 (비로그인 댓글 허용하지 않습니다.)