ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Spring] Annotation 이용의 장점과 @Autowired를 이용한 DI
    프로그래밍 공부/Spring 2021. 4. 30. 20:40

     

    뉴렉처 강사님의 동영상 강의를 정리한 글입니다.

     

     

    자바 애플리케이션의 초기화 설정하는 두가지 방법

    1. XML 파일에 설정 정보를 두기

    2. Annotation을 이용하여 코드 파일에 설정을 심기

     

    Annotation
    - Java 5부터 추가되었다.
    - 클래스 또는 메서드, 변수 등에 붙여 사용된다.
    - 소스코드에 메타코드를 준다. (특별한 의미를 부여하거나 기능을 주입하거나 해석 시점등을 정해줌)

     

    Annotation의 장점

    :  설정을 코드 안에 심어 두는 방식

     

    - 객체를 바꾸면 설정 파일이나 코드 수정 없이 결합을 다르게 할 수 있다.

     

     

    @Autowired를 이용한 DI

     

    InlineExamConsole 객체를 만들 때 Exam 객체와 DI 하는 과정을 어노테이션을 이용하여 진행해보자.

    기존에 작성되어 있던 property 태그를 주석 처리하고, setExam 메서드 위에 @Autowired 어노테이션을 추가한다.

     

    xml 파일은 기본적으로 생성하는 객체 각각의 어노테이션을 확인하지 않는다.

    따라서 현재 코드에서 Exam property를 지정해주지 않았것과 마찬가지 이므로, null exception이 발생한다.

     

    xml이 어노테이션을 확인하도록 설정을 추가하자!

    namespaces에서 context를 체크하자

     

     

    다시 xml 소스 코드로 돌아와 보면 context 설정이 포함된 것을 확인할 수 있다.

     

    <context:annotation-config></context:annotation-config>

     

    위 태그를 추가하여 bean 객체를 생성할 때 어노테이션을 확인하도록 한다.

    이후 다시 실행하면 null exception 없이 실행되는 것을 확인할 수 있다!

     

    @Autowired를 사용하여 DI를 해준다는 것은 알겠는데,,

    xml은 어떤 객체와 DI를 해야 하는지를 어떻게 알고 있는 걸까? 다음 글에 계속..

     

    setting.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xmlns:p="http://www.springframework.org/schema/p"
    	xmlns:util="http://www.springframework.org/schema/util"
    	xmlns:context="http://www.springframework.org/schema/context"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
    		http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.3.xsd">
    	
    	<context:annotation-config></context:annotation-config>
    	<!-- 객체 생성 -->
    	<bean id="exam" class="spring.di.entity.NewlecExam" p:kor="10" p:eng="10" p:math="10" p:com="10"/>
    	
    	<bean id="console" class="spring.di.ui.InlineExamConsole">
    		<!-- 결합 DI -->
    		<!-- <property name="exam" ref="exam"></property> -->
    	</bean>
    </beans>

    '프로그래밍 공부 > Spring' 카테고리의 다른 글

    [Spring] @Autowired의 위치와 Required 옵션  (0) 2021.04.30
    [Spring] @Autowired와 @Qualifier  (0) 2021.04.30
    [Spring] 콜렉션 생성과 DI  (0) 2021.04.30
    [Spring] 생성자 DI  (0) 2021.04.29
    [Spring] 값 형식 DI  (0) 2021.04.29

    댓글

Designed by Tistory.