본문 바로가기
Back/Spring

Spring - Annotation(어노테이션)

by Hyeon_ 2022. 1. 5.

빈 생성 관련 어노테이션

  • 빈 생성(설정)을 위해 클래스 위에 추가되는 어노테이션
  • 클래스 이름 위에 붙이면 해당 클래스 파일에 대한 bean 자동 생성 (xml 파일에서 bean 생성하지 X)
  • 생성되는 빈의 이름은 클래스 이름에서 첫 문자만 소문자
    • ex) NameService 클래스의 빈 이름은 nameService
  • @Component
    • @Controller
    • @Service
    • @Repository
  • @Configuration
    • @Bean

xml 설정 파일에서 필요한 작업

  • 어노테이션을 이용하기 위해 xml 설정 파일에서 필요한 작업
  • xml 설정 파일에 context 네임스페이스 추가
  • <context:component-scan base-package="클래스가 포함된 패키지 명" />
    • @Component 어노테이션이 적용된 클래스를 빈으로 등록
    • 빈으로 등록될 클래스가 들어있는 패키지 지정
    • 상위 패키지를 지정하면 하위 패키지까지 빈으로 등록될 클래스를 찾음
    • <context:annotation-config /> 필요 없음

@Component

  • 클래스를 빈으로 등록(부품 등록)
  • 빈 id를 지정할 수 있음
  • @Component("빈 이름")
  • xml의 <bean id="빈 이름">에 해당

빈 생성 어노테이션 예제

  • @Component 어노테이션 이용한 클래스에 대한 빈 등록
  • 패키지 : com.di.spring_annotation_component
  • 클래스 생성
    • INameService 인터페이스
    • NameService : 빈 생성
      • @Component 어노테이션 추가
    • NameController : 빈 생성
      • @Component 어노테이션 추가
      • NameService 클래스 사용
    • NameMain
      • application-context2.xml 사용
      • NameController 클래스 객체 사용
      • @Component 어노테이션을 사용하여 클래스의 빈으로 등록되었으므로 getBean() 메소드로 가져다 사용
  • 설정 파일 : application-context2.xml
    • <context:component-scan base-package="패키지명" />

@Component 어노테이션의 의미론적 어노테이션

  • @Component : 일반적인 컴포넌트(총칭)
  • 특화된 @Component 어노테이션
    • 클래스의 역할에 따라 의미론적으로 구분
    • @Controller 컴포넌트
    • @Service 컴포넌트
    • @Repository 컴포넌트

@Component : 일반적인 컴포넌트로 등록되기 위한 클래스에 사용

@Controller : 컨트롤러 클래스에 사용 (의미론적)

@Service : 서비스 클래스에 사용(의미론적)

@Repository : DAO 클래스 또는 Repository 클래스에 사용(의미론적)

Spring MVC 구성에 따른 어노테이션 사용

Service

  • Controller로부터 데이터 서비스를 위임받아서 사용자의 요구 사항에 맞는 서비스 제공
  • 업무 단위 또는 트랜잭션 단위로 서비스 담당
  • DAO로부터 데이터 제공 받음
  • DAO를 통해서 데이터를 DB에 저장

@Component 어노테이션의 의미론적 어노테이션 예제

  • @Component의 위치에 다음 어노테이션으로 변경
    • @Controller
    • @Service
  • 패키지 : com.di.spring_di_annotation_component2
  • @Component 어노테이션을 사용한 각 클래스의 기능에 맞춰 변경
    • NameService 클래스 : @Service
    • NameController 클래스 : Controller

설정 담당 자바 클래스에서 사용하는 어노테이션

@Configuration

  • 빈 설정 클래스임을 나타내는 어노테이션

@Bean

  • 빈을 생성해서 반환
  • 빈을 생성하는 메소드 앞에 기술
  • @Bean이 붙은 메소드는 반드시 Bean 메소드 반환
  • @Bean 어노테이션을 사용하는 경우
    • 일반적으로 @Controller, @Service, @Repository 어노테이션을 붙이지 않는 클래스의 빈 생성에 사용

@Configuration / @Bean 어노테이션 예제

  • 패키지 : com.di.spring_di_annotation_configuration_bean
  • 클래스 생성
    • BMI
    • Member
    • ApplicationConfig
    • MemberMain

'Back > Spring' 카테고리의 다른 글

Spring - REST, Ajax  (0) 2022.01.11
Spring - AOP(Aspect Oriented Programming)  (0) 2022.01.05
Spring - Singleton(싱글톤)  (0) 2022.01.05
의존성(Dependency)  (0) 2022.01.05
스프링 프레임워크 종류 및 특징  (0) 2022.01.05