-
์ปดํฌ๋ํธ ์ค์บSpring 2022. 4. 12. 16:14
๐ ์ปจํฌ๋ํธ ์ค์บ๊ณผ ์์กด๊ด๊ณ ์๋ ์ฃผ์ ์์ํ๊ธฐ
- ์คํ๋ง ๋น ๋ฑ๋กํ ๋ ์๋ฐ ์ฝ๋์ @Bean์ด๋ XML์ <bean> ๋ฑ์ ํตํด,
์ค์ ์ ๋ณด์ ์ง์ ๋ฑ๋กํ ์คํ๋ง ๋น์ ๋์ดํ๋ค.
- ๋ฑ๋กํ ์คํ๋ง ๋น์ด ์์ญ๊ฐ, ์์ฒ ๊ฐ๊ฐ ๋ ์ ์์ผ๋ฏ๋ก ์คํ๋ง์ ์ค์ ์ ๋ณด๊ฐ ์์ด๋ ์๋์ผ๋ก
์คํ๋ง ๋น์ ๋ฑ๋กํ๋ ์ปดํฌ๋ํธ ์ค์บ์ด๋ผ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
- ์์กด๊ด๊ณ๋ ์๋์ผ๋ก ์ฃผ์ ํ๋ @Autowired ๊ธฐ๋ฅ๋ ์ ๊ณตํ๋ค
๐ก ์ปดํฌ๋ํธ ์ค์บ
- ์ค์ ์ ๋ณด ์์ด๋ ์๋์ผ๋ก ์คํ๋ง ๋น์ ๋ฑ๋ก -> @ComponentScan ์ฌ์ฉ
- @Component ์ ๋ ธํ ์ด์ ์ด ๋ถ์ ํด๋์ค๋ฅผ ์ค์บํด์ ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋กํ๋ค
- excludeFilters๋ก ์ค์บ ์ ์ธํ ๋์์ ์ง์ ํ ์ ์๋ค
โ @Configuration๋ ์ปดํฌ๋ํธ ์ค์บ ๋์์ด๋ค
: @Configuration ์์ค์ฝ๋ ์ด์ด๋ณด๋ฉด @Component ์ ๋ ธํ ์ด์ ๋ถ์ด์๋ค
- @Autowired ์ ๊ณต : ์์กด๊ด๊ณ๋ฅผ ์๋์ผ๋ก ์ฃผ์ ํด์ค๋ค, ์์ฑ์์์ ์ฌ๋ฌ ์์กด๊ด๊ณ๋ ํ๋ฒ์ ์ฃผ์ ๋ฐ์ ์ ์๋ค
* @ComponentScan์ @Component๊ฐ ๋ถ์ ๋ชจ๋ ํด๋์ค๋ฅผ ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋กํ๋ค
* ์คํ๋ง ๋น์ ๊ธฐ๋ณธ ์ด๋ฆ์ ํด๋์ค๋ช ์ ์ฌ์ฉํ๋ ๋งจ ์๊ธ์๋ง ์๋ฌธ์๋ก ์ฌ์ฉํ๋ค
=> ๊ธฐ๋ณธ : MemberServiceImpl ํด๋์ค -> memberServiceImpl
=> ์ง์ ์ง์ : @Component("memberService2") ์ด๋ฆ ๋ถ์ฌ
๐ก @Autowired
- ์์กด๊ด๊ณ ์๋ ์ฃผ์
- ์์ฑ์์ @Autowired ์ง์ ํ๋ฉด, ์คํ๋ง ์ปจํ ์ด๋๊ฐ ์๋์ผ๋ก ํด๋น ์คํ๋ง ๋น์ ์ฐพ์์ ์ฃผ์ ํ๋ค
- getBean(MemberRepository.class ์ ๋์ผํ๋ค๊ณ ์ดํดํ์
- ์์ฑ์์ ํ๋ผ๋ฏธํฐ๊ฐ ๋ง์๋ ๋ค ์ฐพ์์ ์๋์ผ๋ก ์ฃผ์ ํ๋ค
๐ก ํ์ํ ํจํค์ง์ ์์ ์์น ์ง์
@ComponentScan( basePackages = "hello.core", }
- basePackages : ํ์ํ ํจํค์ง์ ์์ ์์น ์ง์ . ์ด ํจํค์ง๋ฅผ ํฌํจํด ํ์ ํจํค์ง๋ฅผ ๋ชจ๋ ํ์ํ๋ค
- basePackages = {"hello.core", "hello.service"} : ์ฌ๋ฌ๊ฐ์ ์์ ์์น ์ค์ ๊ฐ๋ฅํ๋ค
- basePackageClasses : ์ง์ ํ ํด๋์ค์ ํจํค์ง๋ฅผ ํ์ ์์ ์์น๋ก ์ง์ ํ๋ค
- ์๋ฌด๊ฒ๋ ์ง์ ํ์ง ์์ผ๋ฉด @Component์ด ๋ถ์ ์ค์ ์ ๋ณด ํด๋์ค์ ํจํค์ง๊ฐ ์์ ์์น๊ฐ ๋๋ค
* ํจํค์ง ์์น ์ง์ ํ์ง ์๊ณ , ์ค์ ์ ๋ณด ํด๋์ค์ ์์น๋ฅผ ํ๋ก์ ํธ ์ต์๋จ์ ๋์
๐ ํํฐ
- includeFilters : ์ปดํฌ๋ํธ ์ค์บ ๋์์ ์ถ๊ฐ๋ก ์ง์ ํ๋ค <- ํด๋น ํด๋์ค์ @MyIncludeComponent ์ ์ฉ
- excludeFilters : ์ปดํฌ๋ํธ ์ค์บ์์ ์ ์ธํ ๋์์ ์ง์ ํ๋ค <- ํด๋น ํด๋์ค์ @MyExcludeComponent ์ ์ฉ
๐ก ์ปดํฌ๋ํธ ์ค์บ ๊ธฐ๋ณธ ๋์
- @Component : ์ปดํฌ๋ํธ ์ค์บ์์ ์ฌ์ฉ
- @Controller : ์คํ๋ง MVC ์ปจํธ๋กค๋ฌ์์ ์ฌ์ฉ
: ์คํ๋ง MVC ์ปจํธ๋กค๋ฌ๋ก ์ธ์
- @Service : ์คํ๋ง ๋ก์ง์์ ์ฌ์ฉ
: ํต์ฌ ๋น์ง๋์ค ๋ก์ง์ด ์ฌ๊ธฐ์๊ตฌ๋, ๋น์ฆ๋์ค ๊ณ์ธต์ ์ธ์ํ๋๋ฐ ๋์์ด ๋๋ค
- @Repository : ์คํ๋ง ๋ฐ์ดํฐ ์ ๊ทผ ๊ณ์ธต์์ ์ฌ์ฉ
: ์คํ๋ง ๋ฐ์ดํฐ ์ ๊ทผ ๊ณ์ธต์ผ๋ก ์ธ์ํ๊ณ , ๋ฐ์ดํฐ ๊ณ์ธต์ ์์ธ๋ฅผ ์คํ๋ง ์์ธ๋ก ๋ณํํด์ค๋ค
- @Configuration : ์คํ๋ง ์ค์ ์ ๋ณด์์ ์ฌ์ฉ
: ์คํ๋ง ์ค์ ์ ๋ณด๋ก ์ธ์, ์คํ๋ง ๋น์ด ์ฑ๊ธํค์ ์ ์งํ๋๋ก ์ถ๊ฐ ์ฒ๋ฆฌํ๋ค
๐ก ์ค๋ณต ๋ฑ๋ก๊ณผ ์ถฉ๋
- ์๋ ๋น ๋ฑ๋ก vs ์๋ ๋น ๋ฑ๋ก
: ์ปดํฌ๋ํธ ์ค์บ์ ์ํด ์๋์ผ๋ก ์คํ๋ง ๋น์ด ๋ฑ๋ก๋๋๋ฐ, ์ด๋ฆ์ด ๊ฐ์ ๊ฒฝ์ฐ ์คํ๋ง์ ์ค๋ฅ ๋ฐ์์ํจ๋ค
=> ConflictingBeanDefinitionException ์์ธ ๋ฐ์
- ์๋ ๋น ๋ฑ๋ก vs ์๋ ๋น ๋ฑ๋ก
: ์ด๋ฆ ์ถฉ๋์ => ์๋ ๋น ๋ฑ๋ก์ด ์ฐ์ ๊ถ์ ๊ฐ์ง๋ค (์๋ ๋น์ด ์๋ ๋น์ ์ค๋ฒ๋ผ์ด๋ฉ ํด๋ฒ๋ฆฐ๋ค)
'Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋น ์๋ช ์ฃผ๊ธฐ ์ฝ๋ฐฑ (0) 2022.04.12 ์์กด๊ด๊ณ ์๋ ์ฃผ์ @Autowired (0) 2022.04.12 ์ฑ๊ธํค ์ปจํ ์ด๋ (0) 2022.04.12 ์คํ๋ง ์ปจํ ์ด๋์ ์คํ๋ง ๋น (0) 2022.04.12 Spring ํต์ฌ (0) 2022.04.11