[Spring] @Resource & @Qualifier
🚀 공통점
Resource와 Qualifier둘다 의존 자동 주입을 위한 애노테이션이다.
그리고 Bean의 이름을 검색하여 의존성 주입을 한다는 공통성이 있다.
🚀 Resource를 통한 의존 자동 주입
@Configuration
public class Config{
@Bean("loginUserDTO")
public UserDTO loginUserDTO() {
return new UserDTO();
}
}
------------------------------------------------------------------------------
@Resource(name = "loginUserDTO")
private UserDTO loginUserDTO;
-------------------------------------------
private UserDTO loginUserDTO;
@Resource(name = "loginUserDTO")
puglic void setLoginUserDTO(UserDTO loginUserDTO){
this.loginUserDTO = loginUserDTO;
}
@Configuration
public class Config{
@Bean("loginUserDTO")
public UserDTO loginUserDTO() {
return new UserDTO();
}
}
------------------------------------------------------------------------------
@Resource(name = "loginUserDTO")
private UserDTO loginUserDTO;
-------------------------------------------
private UserDTO loginUserDTO;
@Resource(name = "loginUserDTO")
puglic void setLoginUserDTO(UserDTO loginUserDTO){
this.loginUserDTO = loginUserDTO;
}
필드, 입력 파라미터가 한 개인 빈 프로퍼티 setter 메서드에 적용가능
🚀 Qualifier를 통한 의존 자동 주입
@Configuration
public class Config{
@Bean("loginUserDTO")
public UserDTO loginUserDTO(){
return new UserDTO();
}
}
------------------------------------------------------------------------------
@Autowired
@Qualifier("loginUserDTO")
private UserDTO loginUserDTO;
----------------------------------------------------
private UserDTO loginUserDTO;
@Autowired
@Qualifier(name = "loginUserDTO")
puglic void setLoginUserDTO(UserDTO loginUserDTO){
this.loginUserDTO = loginUserDTO;
}
----------------------------------------------------
private UserDTO loginUserDTO;
@Autowired
@Qualifier(name = "loginUserDTO")
public 클래스이름(UserDTO loginUserDTO){
this.loginUserDTO = loginUserDTO;
}
@Configuration
public class Config{
@Bean("loginUserDTO")
public UserDTO loginUserDTO(){
return new UserDTO();
}
}
------------------------------------------------------------------------------
@Autowired
@Qualifier("loginUserDTO")
private UserDTO loginUserDTO;
----------------------------------------------------
private UserDTO loginUserDTO;
@Autowired
@Qualifier(name = "loginUserDTO")
puglic void setLoginUserDTO(UserDTO loginUserDTO){
this.loginUserDTO = loginUserDTO;
}
----------------------------------------------------
private UserDTO loginUserDTO;
@Autowired
@Qualifier(name = "loginUserDTO")
public 클래스이름(UserDTO loginUserDTO){
this.loginUserDTO = loginUserDTO;
}
필드, 입력 파라미터가 한 개인 빈 프로퍼티 setter 메서드에 적용가능, 생성자에도 적용 가능!!
🚀 차이점
차이점은 @Autowired와 @Qualifier는 스프링 지원이고 @Resource는 표준 자바 지원 (JSR-250에서)이라는 것이다. 게다가 @Resource는 필드와 세터 주입 만 지원하고 @Autowired는 필드, 세터, 생성자 및 다중 인자 메서드 주입을 지원한다.
필드 및 setter 주입에 @Resource를 사용하고, 생성자 또는 다중 인자 메서드 삽입을 위해 @Qualifier 및 @Autowired를 사용하는 것이 바람직하다.
🚀 마지막으로..
스프링 부트가 나온 이후 Autowired가 잘 쓰인다고 들었다.
필드와 setter 메서드에 autowired로 자동 주입을 하는 것보다 생성자에 autowired를 해주는 것이 더 좋은 방법이므로 @Resource의 사용을 지양해야 할거 같다는 생각을 한다.
대신 Qualifier와 Autowired는 스프링에서 제공하는 annotation이기 때문에 다른 framework를 쓰는 경우 더 이상 사용할 수 없다는 단점이 있다.
Author And Source
이 문제에 관하여([Spring] @Resource & @Qualifier), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ssoon/Resource-Qualifier저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)