본문 바로가기

Framework/Spring

Spring DI - Annotation

  • @Annotation 방식
    - XML 파일에는 구동시킬 필수 요소만 작성하고 소스코드에 Annotation으로 표시하여 구동하는 방식

  • @Annotation 종류 - Bean 등록 시 사용
@Component - 객체(컴포넌트)를 나타내는 일반적인 타입으로, <bean> 태그와 동일한 역할
@Repository - Persistence Layer, 영속성을 가지는 속성(파일 / 데이터베이스)을 보유한 클래스
- ex) Data Access Object Class
@Service - Service Layer, 비즈니스 로직을 가진 클래스
- ex) Service Class
@Controller - Presentation Layer, 웹 애플리케이션에서 View에서 전달된 웹 요청 / 응답을 처리하는 클래스
- ex) Controller Class
  • @Annotation 종류 - 의존성 주입 시 사용
@Autowired - 정밀한 의존 관계 주입(DI)이 필요한 경우에 유용함
- @Autowired는 필드 변수, Setter 메소드, 생성자, 일반 메소드에 적용 가능함
- 의존하는 객체를 주입할 때 주로 Type을 이용하게 됨
- @Autowired는 <property>, <constructor-arg> 태그와 동일한 역할을 함
@Resource - 애플리케이션에서 필요로 하는 자원을 자동으로 연결할 때 사용함
- @Resource는 프로퍼티, Setter 메소드에 적용 가능함
- 의존하는 객체를 주입할 때 주로 Name을 이용하게 됨

   ※ @Autowired와 @Resource 어노테이션
       - 공통점 : @Component로 의존관계를 설정한 객체로부터 의존 관계를 자동으로 주입
       - 차이점 : @Autowired는 Type으로, @Resource는 Name으로 연결

  • Spring Annotation 빈 스캐닝(Bean Scanning)
    - <context:component-scan> 태그
    : @Component를 통해 자동으로 Bean을 등록하고, @Autowired로 의존 관계를 주입 받는 어노테이션을 클래스에서      선언하여 사용했을 경우에는 해당 클래스가 위치한 특정 패키지를 Scan하기 위한 설정을 XML에 해줘야 함.
      이때 사용하는 태그

    - 빈 스캐닝(Bean Scanning)
    : Bean으로 사용될 클래스에 특별한 어노테이션(Annotation)을 부여하고 Spring 컨테이너가 이를 통해
      자동으로 Bean을 등록하는 방식을 빈 스캐닝을 통한 자동 인식 Bean 등록 기능이라고 함.
    ※ 장점 : 어노테이션을 부여하고 자동 스캔으로 Bean을 등록하면 xml 문서 생성과 관리에 따른 수고를 덜어주고 개발                속도를 향상시킬 수 있음.
                : 개발자간 xml 설정 파일의 충돌을 최소화 할 수 있음.
    ※ 단점 : 애플리케이션에 등록될 Bean이 어떤 것들이 있고, Bean들 간의 의존 관계가 어떻게 되는지
                  한 눈에 파악할  수 없음.

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

Mybatis  (0) 2025.02.06
Spring IoC(Inversion of Control) / Spring DI(Dependency Injection)  (0) 2025.02.05
Spring Framework  (0) 2025.02.03
Framework 기본 개념  (0) 2025.02.03