๐2022-08-11๐
์คํ๋ง๊ฐ์ฒด๊ฐ ์์ฑ ๊ด๋ฆฌํ๋ ๊ฐ์ฒด = bean
์คํ๋ง bean
๊ฐ์ฒด๋ ๊ฐ์ฒด์ธ๋ฐ ์คํ๋ง์ ๊ด๋ฆฌ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฑ๊ธํค ํ๋๋ง ๋ง๋ ๋ค.
์คํ๋ง์ ํฌ์กฐ๊ธฐ๋ฐ
์คํ๋ง ์ค์ ์ผ๋ก ์ง์ @Configuration
@Bean
- ์คํ๋ง์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ์ด๊ธฐํ ํ๋ ๊ธฐ๋ฅ์ ์ ๊ณต
- ์คํ๋ง์ด ์์ฑํ๊ณ ๊ด๋ฆฌํ๋ ๊ฐ์ฒด๋ฅผ Bean ๊ฐ์ฒด๋ผ ํจ
- ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ๋ฆฌํดํ๋ ๋ฉ์๋์ @Bean annotation์ ์ค์ ํ๋ฉด ํด๋น ๋ฉ์๋๊ฐ ์์ฑํ ๊ฐ์ฒด๋ฅผ ์คํ๋ง์ด ๊ด๋ฆฌํ๋ Bean ๊ฐ์ฒด๋ก ๋ฑ๋กํจ
- ํด๋น ๋ฉ์๋์ ์ด๋ฆ์ ์์ฐํ Bean ๊ฐ์ฒด์ ์๋ณ์๋ก ์ฌ์ฉ
IOC
Inversion Of Control
์ ์ด์ ์ญ์
์ํค๋ฐฑ๊ณผ : ์ ์ด์ ๋ฐ์
์ญ์ ์ด๋ ํ๋ก๊ทธ๋๋จธ๊ฐ ์์ฑํ ํ๋ก๊ทธ๋จ์ด ์ฌ์ฌ์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋ฆ ์ ์ด๋ฅผ ๋ฐ๊ฒ ๋๋
์ํํธ์จ์ด ๋์์ธ ํจํด์ ๋งํ๋ค. ์ค์ฌ์ IoC(Inversion of Control)์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์ ํต์ ์ธ ํ๋ก๊ทธ๋๋ฐ์์ ํ๋ฆ์ ํ๋ก๊ทธ๋๋จธ๊ฐ ์์ฑํ ํ๋ก๊ทธ๋จ์ด ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฝ๋๋ฅผ ํธ์ถํด ์ด์ฉํ๋ค. ํ์ง๋ง ์ ์ด ๋ฐ์ ์ด ์ ์ฉ๋ ๊ตฌ์กฐ์์๋ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฝ๋๊ฐ ํ๋ก๊ทธ๋๋จธ๊ฐ ์์ฑํ ์ฝ๋๋ฅผ ํธ์ถํ๋ค. ์ค๊ณ ๋ชฉ์ ์ ์ ์ด ๋ฐ์ ์ ๋ชฉ์ ์ ๋ค์๊ณผ ๊ฐ๋ค
4. bean ์ด๋ฆ๊ณผ modifier(ํ์ ์)
1) ๋ค์์ ์ค์ ํ์ผ ์ฐธ์กฐ
@Bean
public MemberPrinter printer() {
return new MemberPrinter();
}
@Bean
@Qualifier("mprinter")
public MemberPrinter printer2() {
return new MemberPrinter();
}
@Bean
public MemberInfoPrinter2 infoPrinter() {
MemberInfoPrinter2 infoPrinter = new MemberInfoPrinter2();
return infoPrinter;
}
• printer() ์์ ๋ฐํํ๋ bean์ modifier๋ bean ์ด๋ฆ์ธ "printer"
• printer2() ์์ ๋ฐํํ๋ bean์ modifier๋ "mprinter"
• @Autowired ๊ฒฝ์ฐ๋ @Qualifier ๊ฐ ์์ผ๋ฉด ํ๋๋ ์ธ์์ ์ด๋ฆ์ modifier๋ก ์ฌ์ฉ
• ๋ค์์ ๊ฒฝ์ฐ์ printer ํ๋์ ์ผ์นํ๋ bean์ด ๋ ๊ฐ ์ด์ ์กด์ฌํ๋ฉด modifier๋ก ํ๋ ์ด๋ฆ์ธ "printer"๋ฅผ ์ฌ์ฉ
public class MemberInfoPrinter2 {
@Autowired
private MemberPrinter printer;
……
}
๋ช ์์ ์ฃผ์ ๊ณผ ์๋์ฃผ์ ์ ์์ด์ ์ฐ๋ฉด ๋๋ฒ๊น ์ง์ฅ์ ๋น ์ง๋ค.
์ ๋ถ๋ค ์ค์ ํด๋์ค์์ ๋ช ์์ ์ฃผ์ ์ ์ํฌ ๊ฒ์ธ์ง ์๋์ฃผ์ ์ ์น ๋ค ์ํฌ ๊ฒ์ธ์ง ๋ช ์ํด์ค์ผ
์คํ๋ง ์ ์ฅ์์ ๋ช ์์ ์ผ๋ก Qualifier ๋ฅผ ์จ๋๋๊ฒ ์ ์ง๋ณด์์ ์ข๋ค. ๋๋ฒ๊น ์ง์ฅ์์ ๋น ์ ธ๋์ค๋ ๊ธธ์ด๋ค.
๋ด๋น์๊ฐ ๋ฐ๋๋ฉด์ ์ฑํฅ์ ๋ฐ๋ผ ๋ฐ๋ ๋ .. ์ํ
3. ๊ธฐ๋ณธ ์ค์บ ๋์
@Componet
@Controller
@Service
@Repository
@Service
@Respository
@Aspect
@Configuration
- ์ปจํธ๋กค๋ฌ @Controller (ํ๋ ์ ํ ์ด์ ๋ ์ด์ด, ์น ์์ฒญ๊ณผ ์๋ต์ ์ฒ๋ฆฌํจ)
- ๋ก์ง ์ฒ๋ฆฌ : @Service (์๋น์ค ๋ ์ด์ด, ๋ด๋ถ์์ ์๋ฐ๋ก์ง์ ์ฒ๋ฆฌํจ)
- ์ธ๋ถ I/O ์ฒ๋ฆฌ : @Respository (ํผ์์คํด์ค ๋ ์ด์ด, DB๋ ํ์ผ ๊ฐ์ ์ธ๋ถ I/O์์ ์ ์ฒ๋ฆฌํจ)
'IT > WEB' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[38์ผ์ฐจ] AOP/ aop concert project (0) | 2022.08.12 |
---|---|
[37์ผ์ฐจ] AutoDi (0) | 2022.08.11 |
[37์ผ์ฐจ] dISample project (0) | 2022.08.11 |
[36์ผ์ฐจ] ์คํ๋ง (0) | 2022.08.10 |
[36์ผ์ฐจ] Servlet. jsp (0) | 2022.08.10 |
๋๊ธ