@Autowired
- Spring 프레임워크에서 제공하는 애노테이션입
- **타입(Type)**을 기준으로 의존성 주입을 수행
- 기본적으로는 필드, 세터 메서드, 생성자에 사용할 수 있음
- 타입에 맞는 빈이 여러 개 있을 경우, @Qualifier를 함께 사용하여 특정 빈을 지정
- 주입할 빈이 없을 경우, 예외가 발생
required=false로 설정하면, 주입할 빈이 없어도 예외를 발생시키지 않는다.
@Autowired
private MyService myService;
@Autowired(required = false)
private MyService myService;
@Resource
- JDK 표준(JSR-250) 애노테이션으로, Spring 외의 Java EE 환경에서도 사용
- **이름(Name)**을 기준으로 의존성 주입
- 이름을 먼저 검색하고, 이름으로 주입할 빈이 없으면 타입을 기준으로 빈을 주입
- 기본적으로 필드 또는 세터 메서드에 사용할 수 있음
- 주입할 빈을 이름으로 명시하고 싶을 때 사용
@Resource(name = "myService")
private MyService myService;
주요 차이점 요약
- 주입 방식:
- @Autowired는 타입을 기준으로 주입
- @Resource는 기본적으로 이름을 기준으로 주입 (이름으로 찾지 못할 경우 타입으로 주입)
- 애노테이션 출처:
- @Autowired는 Spring 전용 애노테이션
- @Resource는 Java 표준 애노테이션(JSR-250)으로, Spring 외의 Java EE 환경에서도 사용될 수 있음
- 추가 설정:
- @Autowired는 @Qualifier와 함께 사용할 수 있어 여러 빈 중 특정 빈을 선택할 수 있음
- @Resource는 name 속성을 통해 빈 이름을 지정할 수 있음
어느 것을 사용할지
- Spring에 종속적인 애플리케이션에서는 **@Autowired**를 더 자주 사용
- 표준 Java 애노테이션을 선호하거나 이름 기반 주입이 필요한 경우 **@Resource**를 사용할 수 있음.
'Framework' 카테고리의 다른 글
[eclipse] Attempted to lock an already-locked dir (0) | 2024.06.21 |
---|---|
[Thymeleaf] layout 적용 하기 (0) | 2020.06.11 |
[Thymeleaf] session, parameter 처리 (0) | 2020.06.11 |
[Spring Boot] 자동 리로드(livereload) 설정 (0) | 2020.04.10 |
[Spring + Mybatis] java.sql.SQLException: 부적합한 열 유형: 1111 (0) | 2020.04.10 |