[spring]qualifier 에 대해

·2024년 5월 29일
0

spring

목록 보기
4/8
post-thumbnail

qualifier

🙄

인텔리제이에서 써보자 !ㅇ!

main > java> com > example>b.dependency>qualifier > Game(인터페이스)

main > java> com > example>b.dependency>qualifier > Lol(클래스)

main > java> com > example>b.dependency>qualifier > starCraft(클래스)

(인터페이스)Game.java

package com.ex~~qualifier;

import org.springframework.stereotype.Componenet;

@Component
public interface Game{
	void play();
    
    }
※
_@Component_는 Spring Framework에서 사용되는 어노테이션(annotation).
클래스가 Spring의 관리 대상이 되는 빈(bean)임을 선언함

(클래스)starCraft.java

package com. ~~

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

@Component
@Slf4j
public class StarCraft implements Game{

@Override 
public void play(){
	log.info("STARCRAFT !!!!");
    }
 }   
※
_@Slf4j_: Lombok의 애노테이션으로, 자동으로 로그 객체를 생성. 
log 객체는 Slf4j(Simple Logging Facade for Java)를 
사용하여 로그를 기록하는 데 사용됨.~

(클래스)Lol.java

package com.~..

import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Component;

@Component
@Slf4j
@Primary


public class Lol impolements Game{

	@Override
    public void play(){
    	log.infor("LOL !!! ");
        }
     }
@Primary !!
-> 구현체(여기선 Lol 이랑 starCraft) 중에서 해당 클래스를 우선적으로 주입해라 !!
그니까 Lol을 우선적으로 잡으라고 어노테이션 준거임 !!

(@Primary 하던지 @Qualifier 쓰던지 !)

test > java> com>example>b_dependency>qualifier>GameTest(클래스)

package ~..

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
public class GameTest{

	@Autowired
    @Qualifier("starCraft")
    private Game game;
    //@Qualifier 없을 때 에러남. 왜냐고 ?
    //구현체가 여러개여서 뭘 택해야 할지 모르니깐 ..
    
    @Test
    void Test(){
    	game.play()
       }
     }
profile
어리둥절 빙글빙글 돌아가는 코딩세상~

0개의 댓글