Skip to content

어노테이션 #2

Description

@dev-xong

@Resource vs. @Bean 어노테이션 차이

구분 @resource @bean
목적 주입 (Injection) 객체 생성 및 등록
사용 위치 필드, Setter 메서드 메서드 (일반적으로 @configuration 클래스 내부)
작동 원리 이름(name) 또는 타입(Type)을 통해 이미 존재하는 Bean을 찾아 주입. (JSR-250 표준) 해당 메서드가 반환하는 객체를 Spring IoC 컨테이너에 Bean으로 등록.
처리 주체 JSR-250 표준 (Java) Spring Framework
우선 검색 기준 이름 (name) -> 타입 (Type) -
대체 어노테이션 @Autowired (Spring 전용 주입) @component, @service, @repository (클래스 레벨 Bean 등록)

@Resource

이미 SpringContainer에 등록된 Bean을 가져와 사용하려는 목적

@Resource(name = "beanName")과 같이 name 속성이 지정되면, 해당 이름의 Bean을 찾음

이름 기반 (name) → 필드 이름 기반 → 타입 기반

@Bean

개발자가 직접 코드를 통해 객체를 생성하고 그 객체를 Spring IoC 컨테이너에 Bean으로 등록하려는 목적

클래스 레벨에 @Configuration이 붙은 설정 클래스 내부의 메서드에 선언

  1. Spring 컨테이너가 @Configuration 클래스를 읽음.
  2. @Bean이 붙은 메서드를 실행.
  3. 이 메서드가 반환하는 객체(인스턴스)를 Bean으로 등록.
  4. Bean의 이름은 기본적으로 메서드 이름으로 설정.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    Status
    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions