Spring

@Qualifier, @Resource, @Value

wintertreey 2024. 7. 7. 18:19

@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

 

[Spring] POJO란 무엇인가?

POJO(Plain Old Java Object) 위 이미지는 Spring 삼각형이라는 유명한 이미지로 Spring의 핵심 개념들을 모두 표현하고 있다. POJO는 IoC/DI, AOP, PSA를 통해서 달성할 수 있다는 것을 의미한다. POJO란 Plain Old Jav

ittrue.tistory.com

https://cafe.daum.net/flowlife/HrhB/35

 

Annotation 알아보기

https://velog.io/@gillog/Spring-Annotation-%EC%A0%95%EB%A6%AC 스프링 프레임워크가 버전업 될 때 마다 새로운 어노테이션이 계속 등장하고 있는 실정이다!!! @Scope : Spring 에서 관리하는 Bean(객체)은 싱글턴 상

cafe.daum.net

https://tibang.tistory.com/entry/Value-Spring-EL

 

@Value, Spring EL

@Value변수에 값을 초기화하기 위해 사용한다. @Value("#{dataInfo.name}") // Spring EL : #{표현식}, 만들어진 Component 객체를 이용,private는 getter를 이용해서 가져옴private String name; datainfo객체의 name 변수에 접

tibang.tistory.com