wintertreey 님의 블로그
@Qualifier, @Resource, @Value 본문
@Qualifier
@autowired 타입으로 매핑!
@Autowired
private SenderInter senderInter;라고 해주고
sender, sender2 둘다 인터페이스해주면
expected single matching bean but found 2: sender,sender2
라고 에러문구가 뜬다.
인스턴스된 객체가 두개라 에러가 떨어지는것.
해결방법 :@Qualifier("sender")
센더인터타입이 두갠데, 그중에 센더와 매핑한다는것.
즉 퀄리파이어는 오토와이어드의 보조어노테이션
@Resource
@Resource
는 @Autowired와 달리 객체변수이름으로 매핑을 한다.
pojo란?
POJO란 Plain Old Java Object의 약자로, 이를 직역하면 순수한 오래된 자바 객체이다.
즉, Java로 생성하는 순수한 객체를 뜻한다.
@value
변수에 값을 초기화하기 위해 사용한다.
package anno3_etc;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@Service("my")
public class MyProcess {
@Value("#{dataInfo.name}")// {객체변수명.멤버}
private String name;
private String part;
@Autowired
//public MyProcess(@Value("영업부") String part) { //생성자를 통해 영업부가 들어감.
public MyProcess(@Value("#{dataInfo.part}") String part) { // @Value("#{dataInfo.part}통해 전산부가 들어옴.
this.part = part;
} //그러나 xml이 우선순위임. 그러므로 xml에서 넣어준 값인 판매부가 출력된다.
Spring EL : #{표현식}.
만들어진 Component 객체를 이용. private는 getter를 이용해서 가져옴
spEL 표현식은 #기호로 시작하며 중괄호로 묶어서 표현. #{표현식}
속성값을 참고할때는 $기호와 중괄호로 묶어서 표현. ${property.name}
값을 넣어주는 우선순위는 xml이 1순위.
@Value("123")
private int age;
@Value("1,2,3,4")
private int arr[];
@Value() 안에 ""안적으면 typemispatch.
기본적으로 @Value에 들어가는 값의 type은 String 이다. 하지만 변수 타입에 맞춰져서 알맞게 들어간다.
https://ittrue.tistory.com/211
https://cafe.daum.net/flowlife/HrhB/35
https://tibang.tistory.com/entry/Value-Spring-EL
'백엔드 > Spring' 카테고리의 다른 글
Spring Boot 환경설정 (0) | 2024.07.10 |
---|---|
AOP란? Proxy란? (0) | 2024.07.08 |
@Scope, @Autowired @Resoruce, @PreConstruct @PreDestroy (0) | 2024.07.07 |
MyBatis란? Pooling기법 (0) | 2024.07.04 |
constructor/setter injection, scope 다형성 캐스팅 (0) | 2024.07.04 |