728x90
@Resource와 @Autowired는 모두 Spring Framework에서 의존성 주입을 수행하는데 사용되는 어노테이션입니다. 그러나 이 두 어노테이션 간에는 몇 가지 차이가 있습니다.
- 사용 목적:
- @Resource: 주로 자바 EE (Enterprise Edition) 환경에서 사용되며, 기본적으로 이름을 기반으로 의존성을 주입합니다. 이름 기반으로 주입되는 자원의 경우 name 속성을 사용하여 지정할 수 있습니다.
- @Autowired: Spring Framework에서 주로 사용되며, 주입할 빈을 타입을 기반으로 찾아서 의존성을 주입합니다.
- 주입 방식:
- @Resource: 이름(빈의 id나 이름)을 기반으로 주입합니다. 예를 들어 @Resource(name = "userService")와 같이 사용할 수 있습니다.
- @Autowired: 주입할 빈의 타입을 기반으로 주입합니다. 타입에 해당하는 빈이 여러 개인 경우, 그 중에서 한 가지를 선택하여 주입하도록 동작합니다.
- 속성 유무:
- @Resource: name 속성 외에도 type과 shareable 등의 속성을 사용할 수 있습니다. 하지만 name 속성은 주로 사용되며, 타입에 해당하는 빈이 없으면 이름을 기반으로 검색합니다.
- @Autowired: 주로 타입을 기반으로 주입하므로 별다른 속성이 필요하지 않습니다. 필요에 따라 required 속성을 사용하여 주입할 빈이 없는 경우 예외를 발생시킬지 여부를 결정할 수 있습니다.
- 예시 코드:
- @Resource의 예시:
@Resource(name = "userService")
private UserService userService;
@Autowired의 예시:
@Autowired
private UserService userService;
둘 다 Spring에서 의존성 주입을 위해 사용되며, 주로 @Autowired가 더 간편하게 사용되고 흔하게 쓰입니다. 그러나 @Resource는 자바 EE 환경에서도 사용 가능하며, 특정 상황에서 이름을 기반으로 주입하는 것이 유용할 수 있습니다.
728x90
'스프링Spring' 카테고리의 다른 글
@controller @restcontroller 차이 (1) | 2025.01.09 |
---|---|
@RequestParam, 쿼리스트링 (0) | 2024.01.12 |
@RequestBody , @ResponseBody/@RestController (1) | 2024.01.11 |
HikariCP에 대해 알아보기 (0) | 2023.09.04 |
Model,ModelAndView (0) | 2023.08.29 |