ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 어노테이션
    SPRING 2021. 5. 24. 10:02

    개인 공부 후 정리 목적의 글 입니다.

     

     

    어노테이션(Annotation)이란?

    @를 이용한 주석으로 자바 코드에 주석을 달아 특별한 의미를 부여하는 것

     

     

    1. 컴포넌트 스캔(component-scan)

    스프링 설정 파일에 애플리케이션에서 사용할 객체들을 <bean> 등록하지 않고 자동으로 생성하려면

    <context:component-scan/> 이라는 엘리먼트를 정의해야 한다.

              => @Component가 설정된 클래스들을 자동으로 객체 생성한다.

    어노테이션 사용시 xmlns:context="http://www.springframework.org/sehema.context"를 작성해야된다.

     

     

    즉, @Component를 설정시 bean을 등록하지 않아도 자동으로 생성해준다. 

     

    <context:component-scan> 엘리먼트의 base-package 속성 : 속성값을 "com.springbook.biz" 형태로 지정 시

                                              com.springbook.biz 패키지로 시작하는 모든 패키지를 스캔 대상에 포함한다.

     

     

    2. @Component

    <context:component-scan>를 설정했으면 @Component 설정 시 <bean> 엘리먼트로 등록할 필요가 없다.

    여기서 

    1. 클래스의 객체가 메모리에 생성되는 것은 문제가 없다.

    2. 클라이언트 프로그램에서 객체를 요청할 수 없다. -> 요청하려면 사용할 아이디이름이 반드시 설정되어야됨

     

    -< 아이디나 이름 속성 미지정 시 이름 규칙 >-

    컨테이너가 자동으로 이름을 설정해준다 => 클래스의 이름의 첫 글자를 소문자로 변경하기만 하면 된다.

     

    의존성 주입 설정

     

     

    3. 의존성 주입 어노테이션

    (1) @Autowired : 주로 변수 위에 설정하여 해당 타입의 객체를 찾아서 메모리에 자동으로 할당

    사용 : 생성자나 메소드, 멤버변수 위에 모두 사용, 대부분은 멤버변수 위에 선언하여 사용

    에러 : @Autowired가 붙은 객체가 메모리에 없다면 컨테이너는 NoSuchBeanDefinitionException인 예외처리를 발생

     

     

    (2) @Qualifier : 특정 객체의 이름을 이용하여 의존성 주입할 때 사용

    사용 : 의존성 주입될 객체의 아이디나 이름을 지정할 수 있는데, 이때 사용할 객체의 이름 중 하나를 지정하면 처리가 가능하다.

     

     

    (3) @Inject : @Autowired와 동일한 기능을 제공

     

    (4) @Resource : @Autowired와 @Qualifier의 기능을 결합한 어노테이션

     @Autowired는 변수의 타입을 기준으로 객체를 검색하여 의존성 주입을 처리하지만

     @Resource는 객체의 이름을 이용하여 의존성 주입을 처리한다.

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    'SPRING' 카테고리의 다른 글

    어드바이스 동작 시점  (0) 2021.05.25
    AOP 용어  (0) 2021.05.25
    의존성 주입  (2) 2021.05.21
    스프링 컨테이너  (0) 2021.05.21
    프레임워크  (0) 2021.05.20
Designed by Tistory.