반응형
@Autowired란?
Spring 실행 시점 의존 관계 주입을 위해서 사용하는 어노테이션입니다.
그렇기 때문에 Spring FrameWork에서만 사용 가능합니다.
타입을 기준으로 의존 관계를 주입합니다.
@Resource란?
Java에서 만든 의존 관계 주입을 위해서 사용하는 어노테이션입니다.
이름을 기준으로 의존 관계 주입합니다.
@Inject란?
Java에서 만든 의존 관계 주입을 위해서 사용하는 어노테이션입니다.
타입을 기준으로 의존 관계를 주입합니다.
↔️ @Autowired @Resource @Inject 비교
3가지의 어노테이션 모두 의존 관계 주입을 위한 어노테이션입니다.
하지만, @Autowired의 경우에는 Spring 어노테이션이며,
@Resource, @Inject의 경우에는 Java 어노테이션입니다.
또한, @Autowired, @Inject의 경우에는 타입을 기준으로 의존 관계를 주입하며,
@Resource의 경우에는 이름을 기준으로 의존 관계를 주입합니다.
@Resource // 이름 기준
PostService postService1; // PostService1 타입으로 연결
@Autowired // 타입 기준
PostService postService2; // PostService 타입으로 연결
@Inject // 타입 기준
PostService postService3; // PostService 타입으로 연결
개발 순서
- @Resource(2006년 12월 11일)
- @Autowired(2007년 11월)
- @Inject(Spring의 @Autowired를 참고하여 Java에서 개발)
👉 @Resource가 레거시 코드에서 많이 보이는 이유
레거시 코드를 보게 되면 @Resource를 많이 보실 수 있습니다.
그러한 이유는 @Resource가 제일 먼저 개발이 된 순수한 Java 어노테이션이며,
과거에는 Spring을 사용하지 않는 개발자들도 있었기 때문에 당시의 트렌드라고 생각합니다.
보통 레거시 코드에서는 @Resource를 사용하는 프로젝트이면 @Inject와 같이 사용하는 경우가 많으며,
@Autowired를 사용하는 프로젝트는 @Autowired만 사용한다는 것이 일반적입니다.
반응형
'JAVA & Spring' 카테고리의 다른 글
[Java] 객체(Object)란? 인스턴스(Instance)란? 아주 쉽게 정리(+코드) (0) | 2024.10.16 |
---|---|
[Java] 클래스(Class)란? 아주 쉽게 그림으로 정리(+코드) (1) | 2024.10.16 |
[Spring Boot] Thymeleaf decoupled logic Config 등록 방법 (0) | 2024.04.01 |
[Spring] Log 출력 및 총 정리 (0) | 2024.01.18 |
[Spring] 인텔리제이 Lombok(롬복) 추가 하는 방법(gradle, maven) (0) | 2024.01.10 |
댓글