본문 바로가기
Spring

스프링 프레임워크 DI 3가지 주입 방법

by 코뿔송 2017. 11. 3.

스프링 DI 3가지 주입 방법

 

 

 

 

 

스프링 DI 주입 방법은 3가지가 있다.

 

1. 기존의 XML구성 파일을 생성하여 주입하는 방식

2. 자바 파일을 통해 주입하는 방식

3. XML파일과 자바 파일 두가지를 사용하여 주입하는 방식

 

첫번째 방식은 이때 가지 보았던 방식이다.

 

XML 구성 파일을 생성하여 설정 값을 입력하고 기능을 사용하고자 하는 클래스에서 불러 사용하는 방식이다.

 

 

 

두번째 방식은 자바파일을 생성하여 주입하는 방식이다.

 

이 방식은 자바의 어노테이션을 이용한다.

 

어노테이션은 컴파일 타임 또는 런타임에 해석이 되는 주석으로 생각하면 된다.

 

JDK5버젼 부터 등장 했고 메타데이터이다.

 

@Configuration 어노테이션을 제일 위에 입력해주고 주입하고자 하는 클래스이름을 설정한다.

 

 

설정 파일안에 Bean어노테이션을 사용한다.

 

@Bean은 Bean객체를 생성하겠다고 컴파일에게 알려주는 것으로 생각하면 된다.

 

자바를 잘 알고 스프링에 입문하는 사람에게는 이 방법이 더 친숙할지도 모른다.

 

하지만 XML 구성 파일을 생성하여 주입하는 방식이 제일 많이 사용되고 있다.

 

 

 

여기서 뜬금없지만 어노테이션의 사용하면 얻을 수 있는 장점들에 대해 언급한다.

 

기존의 자바 어플리케이션 프로그램들은 외부의 XML 파일에 설정값들을 설정하는 방식을 사용한다.

 

변경이 될 수 있는 데이터들의 변경 요구가 들어왔을 경우 코드 부분이 아닌 XML구성 파일을 수정하여

 

최대한 자바 코드를 수정하지 않는 것이다.

 

그렇게 되면 재 컴파일을 하지 않아도 되기 때문에 쉽게 변경상항을 적용할 수 있다.

 

 

하지만 XML 구성 파일을 사용하면 많은 장점을 가질수 있지만 단점도 생길수 밖에 없다.

 

모델 클래스와 서버 클래스 ,XML 설정 파일이 분산되어있기 때문에 데이터 처리정보를 확인하기

 

위해서는 3파일 모두 마구마구 보아야한다는 단점이 존재한다는 것이다.

 

 

어노테이션의 사용은 이러한 문제를 해결해 준다고 한다.

 

데이터에 대한 유효성을 모델클래스에 직접 명시함으로써 컴파일시 바로 확인이 가능하다는 것이다.

 

 

 

다시 본론으로 들어가서 이 두번째 방법은 이러한 어노테이션을 사용해서 주입하게 된다.

 

 

src/main/resources 가아닌 자바 메인 폴더에 클래스로 생성하면 된다.

 

주입을 하기 위해 자바로 만들어진 구성 파일은 메인 클래스에서 AbstractApplicationContext 클래스로 받지 않는다.

 

AnonotationConfigApplicationContext으로 받는다.

 

이 클래스는 AbstractApplicationContext을 상속받고 있다.  결국에는 자바 클래스로 생성된 구성파일은

 

컴파일이 될시 내부적으로 XML파일 형식으로 변경되어 주입하게 된다.

 

여기서 주의할 점은 AnonotationConfigApplicationContext의 인자값에 구성파일.파일형식 까지 입력해 주어야 된

 

다.

 

 

세번째는 자바 파일과 XML파일 두가지를 사용하여 주입하는 방식이다.

 

이 방식은 2가지가 있는데

 

첫번째는 자바 구성 파일에 XML 파일을 IMPORT해주는 방식이다.

 

밑에 사진을 보게 되면 @configuration 구성파일임을 나타내는 어노테이션 밑에

 

@ImportResource("classpath:구성파일의 위치")를 입력해주게 되면

 

자바 파일을 구성파일로 입력받는거와 같이 사용을 해주면 된다.

 

 

두번째 방법은 반대로 XML파일에 자바 파일을 가지고 와서 XML파일을 주입하는 방식이다.

 

XML파일에

 

<context:annotaion-config />

 

<bean class="자바 클래스로 설정된 구성파일의 절대경로"> 로 입력해주면 된다.

 

context는 아직 등록이 안되어있기 때문에 최상위 bean태그의 설정에

 

xmlns:context=http://www.springframework.org/schema/context을 추가해준다.

 

 

그리고 XML파일을 메인 클래스에서 주입하면 된다.

 

 

 

 

댓글