본문 바로가기

건승하고있어요/Spring framework

[Spring] 스프링1일차 - 어노테이션 기반 설정

반응형

어노테이션 기반 설정


1. Context 네임스페이스 추가

스프링 설정 파일의 루트 엘리먼트인 <beans>에 Context 관련 네임스페이스와 스키마 문서의 위치를 등록

->자바EE로 해 놓고 있으면 콘솔창 위쪽으로 namespace라는 탭이 있다. 그거 누르면 체크체크 할 수 있다.


이렇게 한다. 

...ㅋㅋㅋㅋㅋㅋㅋ


2.컴포넌트 스캔(component-scan) 설정

스프링 설정파일에 애플리케이션에서 사용할 객체들을 <bean>등록하지 않고 자동으로 생성하려면 <context:component-scan/>이라는 엘리먼트를 정의해야한다. 이 설정을 추가하면 스프링 컨테이너는 클래스 패스에 있는 클래스들을 스캔하여 @Component가 설정된 클래스들을 자동으로 객체생성한다. 

<context:component-scan base-package="패키지명"></context:component-scan>


<context:component-scan/>설정을 제외한 나머지 <bean> 설정은 삭제하거나 주석으로 처리한다.

중요한 것은 <context:component-scan>엘리먼트의 base-package 속성인데, 만약 속성값을 "com.ciel.animo"형태로 지정할 경우 com.ciel.animo 패키지로 시작하는 모든 패키지를 스캔 대상에 포함한다. 


3. @Component

클래스 위에 @Component를 클래스 선언부 위에 설정한다. 

@Component

public class SamsungTV implements TV{

.....

}

=><bean class="패키지.SamsungTV"></bean> 


잊지 말 것

-해당 클래스에 기본생성자가 있어야만 객체 생성 가능

-컨테이너가 생성한 객체를 요청하기 위해서는 id나 name이 반드시 설정 되어 있어야 함


따라서 다음과 같이 설정이 필요하다.

@Component("tv")

public class SamsungTV implements TV{

....

}

=><bean id="tv" class="패키지.SamsungTV"></bean>


만약 id나 name 속성을 미지정하면 어떻게 되나여?

-> 컨테이너가 자동으로 이름을 설정해준다. 이때 이름 규칙은 클래스 이름의 첫 글자를 소문자로 변경한 것이다. 

반응형