๋ฐ์ํ
Bean ๋ฑ๋ก
์๋ ๋ฑ๋ก ?
@Component
์ฌ์ฉ ์,@ComponentScan
์ ์ํด ์๋์ผ๋ก ํด๋น ํด๋์ค Bean์ผ๋ก ๋ฑ๋ก- ๐โโ๏ธ ๊ทธ๋ฐ๋ฐ ์ ์๋์ผ๋ก ๋ฑ๋ก??
- ๊ธฐ์ ์ ์ธ ๋ฌธ์ ๋ ๊ณตํต ๊ด์ฌ์ฌ๋ฅผ ์ฒ๋ฆฌํ ๋ ์ฌ์ฉํ๋ ๊ฐ์ฒด
- ๋น์ฆ๋์ค ๋ก์ง Bean๋ณด๋ค ์๊ฐ ์ ๊ธฐ ๋๋ฌธ์ ๋ถ๋ด์ค๋ฝ์ง ์์
- ์๋ ๋ฑ๋ก๋ Bean์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ ๋ ํด๋น ์์น๋ฅผ ํ์ ํ๊ธฐ ์ฌ์
- ๊ธฐ์ ์ ์ธ ๋ฌธ์ ๋ ๊ณตํต ๊ด์ฌ์ฌ๋ฅผ ์ฒ๋ฆฌํ ๋ ์ฌ์ฉํ๋ ๊ฐ์ฒด
์๋ ๋ฑ๋ก ๋ฐฉ๋ฒ
@Configuration
public class PasswordConfig {
@Bean
public PasswordEncoder passwordEncoder(){
return new BCryptPasswordEncoder();
}
}
- ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ ๋ฉ์๋
@Bean
- ๋ฉ์๋๊ฐ ์ํ ํด๋์ค
@Configuration
- Spring IoC ์ปจํ
์ด๋์
Bean
์ผ๋ก ์ ์ฅ๋จ
๋์ผํ ํ์ ์ Bean ์ค๋ณต ์กด์ฌ
EX) Food ์ธํฐํ์ด์ค๋ฅผ ์์๋ฐ์ chicken, pizza ํด๋์ค ์กด์ฌ -> ๋๋ค ๋น ๋ฑ๋ก
@Autowire
Food food;
@Autowired
๋ก Bean ๊ฐ์ฒด ์ฃผ์ ์๋- ์ค๋ฅ ๋ฐ์ โ "Food ํ์ ์ Bean์ด ํ๋ ์ด์ ์กด์ฌ"
ํด๊ฒฐ ๋ฐฉ๋ฒ
- ๋ฑ๋ก๋ Bean ์ด๋ฆ ๋ช
์
->@Autowired Food pizza; @Autowired Food chicken;
@Autowired
๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก Bean Type์ผ๋ก DI๋ฅผ ์ง์ํ๋ฉฐ ์ฐ๊ฒฐ์ด ๋์ง ์์ ๊ฒฝ์ฐ Bean Name์ผ๋ก ์ฐพ์ @Primary
์ฌ์ฉ
-> ๊ฐ์ ํ์ ์ ๋น ์ค์์@Component @Primary public class Chicken implements Food { @Overrid public void eat(){ System.out.println("eat chicken"); } }
@Primary
๊ฐ ์ค์ ๋ Bean ๊ฐ์ฒด ์ฃผ์@Qualifier
์ฌ์ฉ@Component @Qualifier("pizza") public class Pizza implements Food { @Overrid public void eat(){ System.out.println("eat pizza"); } }
- pizza ํด๋์ค์
@Qualifier("pizza")
์ถ๊ฐ@Autowired @Qualifier("pizza") Food pizza;
@Qualifier
๊ฐ ๋์ผํ ๋น ์ฃผ์
- pizza ํด๋์ค์
๋ง์ฝ
@Primary
์@Qualifier
๊ฐ ๋์ ์ ์ฉ ->@Qualifier
์ฐ์ ์ ์ฉ
๊ทธ๋ฌ๋@Qualifier
๋ ์ฃผ์ ๋ฐ๊ณ ์ํ๋ ๊ณณ์ ๋ฐ๋์ ์ถ๊ฐํด์ค์ผํจ
๋ฒ์ฉ์ ์ผ๋ก๋ Primary, ์ง์ฝ์ ์ผ๋ก๋ Qualifier ์ฌ์ฉํ๋ ๊ฒ ๊ถ์ฅ
728x90
๋ฐ์ํ
'๋ด์ผ๋ฐฐ์์บ ํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์คํ๋ง ์๋ จ 3์ฃผ์ฐจ : ์ฟ ํค์ ์ธ์ (1) | 2023.11.17 |
---|---|
์คํ๋ง ์๋ จ 3์ฃผ์ฐจ : ์ธ์ฆ๊ณผ ์ธ๊ฐ (0) | 2023.11.09 |
Spring ์ ๋ฌธ 2์ฃผ์ฐจ : JPA - 4 (0) | 2023.11.07 |
Spring ์ ๋ฌธ 2์ฃผ์ฐจ : JPA - 3 (0) | 2023.11.07 |
Spring ์ ๋ฌธ 2์ฃผ์ฐจ : JPA - 2 (0) | 2023.11.07 |