728x90
반응형
- @Resource, @Autowired, @Inject 모두 의존 관계를 자동으로 연결해주는 기능을 가진 어노테이션이다
@Resource
- JSR에 실려있는 자바 기존 어노테이션
- Name -> Type -> Qualifier 기준으로 찾음
- 사용 위치 : 멤버변수, setter메서드
- Name으로 DI가 가능하고 프레임워크 종속적이지 않기 때문에 추천
- 싱글턴
@Autowired
- Spring에서 지원하는 어노테이션
- Type -> Name -> Qualifier
- 사용 위치 : 멤버 변수 , Setter메서드, 생성자, 일반 메서드
- 타입으로 연결하기 때문에 같은 타입 여러개의 필드는 오류가 남
- 강제 연결시 @Qualifier사용
@Inject
- JAVA에서 지원하는 어노테이션, 프레임워크 종속적이지 않음
- Type -> Qualifier -> 이름
- @Autowired와 동작 방식이 같지만 찾는 순서가 다름
- 사용 위치 : 멤버 변수, Setter메서드, 생성자, 일반 메서드
@Qualifier
- Type이 동일한 Bean객체가 여러개 있으면 Spring Exception이 발생(@Autowired)
- @Autowired가 적용된 필드나 설정 메서드 property이름과 같은 이름을 가진 빈객체가 있을 경우 이름이 같은 빈 객체를 주입 받는다.
@Getter
@Setter
@Component("userInfo")
public class UserInfo {
private String userName;
private int age;
}
@RestController
public class DiController {
@Resource
private UserInfo userInfo;
@GetMapping("/setUser")
public String setUser(HttpServletRequest request) {
userInfo.setAge(10);
userInfo.setUserName("hi");
return "userInfo";
}
}
728x90
반응형
'Spring' 카테고리의 다른 글
Spring @RequestMapping multi request 요청받기 (0) | 2023.02.22 |
---|---|
Spring boot multiple database 설정 (mybatis+hikari) (0) | 2022.06.09 |
HttpSession 사용 방법 사용 이유 (0) | 2022.05.26 |
@CookieValue 스프링 쿠키 사용법 (0) | 2022.05.25 |
Spring Boot security Oauth2 로그인 연동 (구글/카카오) (1) | 2022.02.24 |