• SPRING_ 생성자 DI, Component-Scan / Autowired

    2021. 9. 15.

    by. KAEY


    생성자를 이용한 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를 동시에 사용할 수도 있다.

     


     

    댓글 (비로그인 댓글 허용하지 않습니다.)