๐ ์ค๋์ ํ์ต ํค์๋
- Bean
๐ฅ ๊ฐ์ ํ์ Bean ๋ฑ๋ก
Food Interface
public interface Food {
void eat();
}
Chicken
import org.springframework.stereotype.Component;
@Component
public class Chicken implements Food {
@Override
public void eat() {
System.out.println("์นํจ์ ๋จน์ต๋๋ค.");
}
}
Pizza
import org.springframework.stereotype.Component;
@Component
public class Pizza implements Food {
@Override
public void eat() {
System.out.println("ํผ์๋ฅผ ๋จน์ต๋๋ค.");
}
}
โ๏ธ ํ ์คํธ์ฝ๋ ์์ฑ
@SpringBootTest
public class BeanTest {
@Autowired
Food food;
}
- Food food; ํ๋์ @Autowired๋ฅผ ์ฌ์ฉํ์ฌ Bean์ ์ฃผ์ ํ๋ ค๊ณ ์๋ํ ๋, ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
- Food ํ์ ์ Bean ๊ฐ์ฒด๊ฐ ํ ๊ฐ ์ด์ ์๋ค๋ ์ค๋ฅ๋ก ์ธํ์ฌ ์ฃผ์ ์ด ์๋ฉ๋๋ค.
- ์ด๋ค Bean์ ๋ฑ๋กํด์ผ ํ ์ง ๋ชฐ๋ผ ๋ฐ์ํ๋ ์ค๋ฅ์ ๋๋ค.
๐ฅ ํด๊ฒฐ ๋ฐฉ๋ฒ
๋ฑ๋ก๋ Bean ์ด๋ฆ ๋ช ์
@SpringBootTest
public class BeanTest {
@Autowired
Food pizza;
@Autowired
Food chicken;
}
- Bean ์ด๋ฆ pizza, chicken์ ์ ํํ๊ฒ ๋ช ์ํด ์ฃผ๋ฉด ํด๊ฒฐํ ์ ์์ต๋๋ค.
- ์ด๋ก์จ ์ ์ ์๋ ์ ์ @Autowired๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก๋ Bean Type(Food)์ผ๋ก DI๋ฅผ ์ง์ํ๋ฉฐ ์ฐ๊ฒฐ์ด ๋์ง ์์ ๊ฒฝ์ฐ,
- Bean Name(Pizza, Chicken)์ผ๋ก ์ฐพ๋ ๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
Primary ์ฌ์ฉ
@Component
@Primary
public class Chicken implements Food {
@Override
public void eat() {
System.out.println("์นํจ์ ๋จน์ต๋๋ค.");
}
}
//=========================================
@SpringBootTest
public class BeanTest {
@Autowired
Food food;
}
- @Primary๊ฐ ์ถ๊ฐ๋๋ฉด ๊ฐ์ ํ์ ์ Bean์ด ์ฌ๋ฌ ๊ฐ๊ฐ ์๋๋ผ๊ณ ์ฐ์ ์ ์ผ๋ก @Primary๊ฐ ์ค์ ๋ Bean ๊ฐ์ฒด๋ฅผ ์ฃผ์ ํฉ๋๋ค.
@Qualifier ์ฌ์ฉํ๊ธฐ
@Component
@Qualifier("pizza")
public class Pizza implements Food {
@Override
public void eat() {
System.out.println("ํผ์๋ฅผ ๋จน์ต๋๋ค.");
}
}
//=========================================
@SpringBootTest
public class BeanTest {
@Autowired
@Qualifier("pizza")
Food food;
}
- ๊ฐ์ ํ์ ์ Bean๋ค์ Qualifier์ Primary๊ฐ ๋์์ ์ ์ฉ๋์ด์๋ค๋ฉด Qualifier์ ์ฐ์ ์์๊ฐ ๋ ๋์ต๋๋ค.
- ํ์ง๋ง Qualifier๋ ์ ์ฉํ๊ธฐ ์ํด์ ์ฃผ์ ๋ฐ๊ณ ์ํ๋ ๊ณณ์ ํด๋น Qualifier๋ฅผ ๋ฐ๋์ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
- ๋ฐ๋ผ์ ๊ฐ์ ํ์ ์ Bean์ด ์ฌ๋ฌ ๊ฐ ์์ ๋๋ ๋ฒ์ฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ Bean ๊ฐ์ฒด์๋ Primary๋ฅผ ์ค์ ํ๊ณ
- ์ง์ฝ์ ์ผ๋ก ์ฌ์ฉ๋๋ Bean ๊ฐ์ฒด์๋ Qualifier๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๐ ์ค๋์ ํ๊ณ
์ ์ ์์์ผ ํ ๊ฒ๋ค์ด ๋ง์์ง๊ณ ์ด๋ ต์ต๋๋ค!
ํ์ง๋ง ์ฐจ๊ทผ์ฐจ๊ทผ ์์๋ณด๊ฒ ์ต๋๋ค.
'TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
02/01(๋ชฉ) ๋ด์ผ๋ฐฐ์์บ ํ Java 29์ผ์ฐจ TIL - JWT (0) | 2024.02.01 |
---|---|
01/31(์) ๋ด์ผ๋ฐฐ์์บ ํ Java 28์ผ์ฐจ TIL - ์์์ฑ ์ปจํ ์คํธ (0) | 2024.01.31 |
01/29(์) ๋ด์ผ๋ฐฐ์์บ ํ Java 26์ผ์ฐจ TIL - Bean ์๋ ๋ฑ๋ก (1) | 2024.01.29 |
01/26(๊ธ) ๋ด์ผ๋ฐฐ์์บ ํ Java 25์ผ์ฐจ TIL - Bean (0) | 2024.01.26 |
01/25(๋ชฉ) ๋ด์ผ๋ฐฐ์์บ ํ Java 24์ผ์ฐจ TIL - REST API (0) | 2024.01.25 |