[Spring] AutoWiringScan

안요한·2022년 7월 13일
0

SPRING

목록 보기
3/3

오토 디스커버리

  • <context:annotation-config>는 대부분의 를 제거할 수 있지만 여전히 을 선언해야 한다.

<context:component-scan>

  • <context:component-config> 대신 사용해서
  • 그 기능을 모두 수행하며 여기에 더해 자동으로 빈을 발견하도록 설정한다.
<!-- <context:annotation-config /> -->
<context:component-scan base-package="autoWiring.scan"/>

오토 디스커버리 빈 애너테이션

애너테이션내용
@Component범용 스테레오타입 애너테이션은 클래스가 스프링 컴포넌트임을 나타낸다.
@Controller클래스가 스프링 MVC 컨트롤러를 정의함을 나타낸다.
@Repository클래스가 데이터 저장소를 정의함을 나타낸다.
@Service클래스가 서비스를 정의함을 나타낸다.
  • 명시적으로 선언한 빈을 제거해도 된다.
  • 지정한 패키지를 스캔할 때 @Component() 애너테이트를 만나면 자동으로 빈을 드옭해준다.
  • 카멜 케이싱 클래스 이름으로 생성된다.

컴포넌트 - 스캔 필터링

  • <context:include-filter>와 <context:exclude-filter>서브 엘리멘트를 추가하여 스캔을 조정할 수 있다.
  • @Component() 등록을 제거해도 된다.
이름내용
annotation클래스에 지정한 애너테이션이 적용됐는지 여부, expression 애트리뷰트에는 애너테이션 이름을 적용한다.
assignable클래스가 지정한 타입으로 할당 가능한지의 여부, expression 애트리뷰트에는 클래스 타입 이름을 적용한다.
aspectj클래스 이름이 AspectJ의 표현식에 일치하는지 여부, expression 애트리뷰트에는 AspectJ의 표현식을 저용한다.
customorg.springframeword.core.type.TypeFilter의 커스텀 구현체를 사용, expression 애트리뷰트에 지정한다.
regex클래스 이름이 정규 표현식에 일치하는지 여부, expression 애트리뷰트에는 정규표현식을 정용한다.

<context:include-filter>

  • 모든 클래스를 빈으로 자동 등록한다.
  • 대부분 assignable 사용
  • expresstion에는 인터페이스 경로
<context:component-scan base-package="wiring.autowiring">
	**<context:include-filter type="assignable" expression="wiring.autowiring.Instrument"/>**
</context:component-scan>

<context:exclude-filter>

  • 등록하지 말아야할 클래스를 알려준다.
  • @Skiplt 애너테이션과 유사
<context:component-scan base-package="wiring.autowiring">
	<context:include-filter type="assignable" expression="wiring.autowiring.Poem"/>
	<context:exclude-filter type="assignable" expression="wiring.autowiring.Flower"/>
</context:component-scan>

---------------------------

<context:component-scan base-package="wiring.autowiring">
	<context:include-filter type="assignable" expression="wiring.autowiring.Instrument"/> <context:exclude-filter type="assignable" expression="wiring.autowiring.SkipIt"/>
</context:component-scan>

스프링의 자바 기반 설정 사용

  • XML 기반의 객체 생성 대신 자바 고유의 기능을 사용할 수 있다.
  • 최소한의 XML 설정은 필요하다.
  • <context:component-scan>이 @Configuration 애너테이션이 적용된 클래스를 찾아 자동으로 빈으로 등록한다.
profile
걍이렇게돼브렀다리

0개의 댓글