๋ฐ์ํ
์ปดํฌ๋ํธ ์ค์บ
์คํ๋ง์ ์ค์ ์ ๋ณด๊ฐ ์์ด๋ ์๋์ผ๋ก ์คํ๋ง ๋น์ ๋ฑ๋กํ๋ ์ปดํฌ๋ํธ ์ค์บ์ด๋ผ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
@Configuration
@ComponentScan(
excludeFilters = @Filter(type = FilterType.ANNOTATION, classes =
Configuration.class))
public class AutoAppConfig {
}
์ปดํฌ๋ํธ ์ค์บ์ ์ด๋ฆ ๊ทธ๋๋ก @Component ์ ๋ ธํ ์ด์ ์ด ๋ถ์ ํด๋์ค๋ฅผ ์ค์บํด์ ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋กํ๋ค.
- ์ด๋ ์คํ๋ง ๋น์ ๊ธฐ๋ณธ ์ด๋ฆ์ ํด๋์ค๋ช ์ ์ฌ์ฉํ๋ ๋งจ ์๊ธ์๋ง ์๋ฌธ์๋ฅผ ์ฌ์ฉํ๋ค.
- ๋น ์ด๋ฆ ๊ธฐ๋ณธ ์ ๋ต: MemberServiceImpl ํด๋์ค ->
memberServiceImpl
- ๋น ์ด๋ฆ ์ง์ ์ง์ : ๋ง์ฝ ์คํ๋ง ๋น์ ์ด๋ฆ์ ์ง์ ์ง์ ํ๊ณ ์ถ์ผ๋ฉด @Component("memberService2") ์ด๋ฐ์์ผ๋ก ์ด๋ฆ์ ๋ถ์ฌํ๋ฉด ๋๋ค.
ํ์ ์์น์ ๊ธฐ๋ณธ ์ค์บ ๋์
@ComponentScan(
basePackages = "hello.core", // ์ด ํจํค์ง๋ฅผ ํฌํจํด์ ํ์ ํจํค์ง๋ฅผ ๋ชจ๋ ํ์ํ๋ค
// ์์ ์์น๋ฅผ ์ฌ๋ฌ๊ฐ ์ง์ ํ ์๋ ์๋ค.
// ๋ง์ฝ ์ง์ ํ์ง ์์ผ๋ฉด @ConponentScan์ด ๋ถ์ ์ค์ ์ ๋ณด ํด๋์ค์ ํจํค์ง๊ฐ ์์ ์์น๊ฐ ๋๋ค
}
๊ถ์ฅ ๋ฐฉ๋ฒ : ํจํค์ง ์์น๋ฅผ ์ง์ ํ์ง ์๊ณ , ์ค์ ์ ๋ณด ํด๋์ค์ ์์น๋ฅผ ํ๋ก์ ํธ ์ต์๋จ์ ๋๋ ๊ฒ์ด๋ค. ์ต๊ทผ ์คํ๋ง ๋ถํธ๋ ์ด ๋ฐฉ๋ฒ์ ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณตํ๋ค.
์ฐธ๊ณ ๋ก ์คํ๋ง ๋ถํธ๋ฅผ ์ฌ์ฉํ๋ฉด ์คํ๋ง ๋ถํธ์ ๋ํ ์์ ์ ๋ณด์ธ @SpringBootApplication ๋ฅผ ์ด ํ๋ก์ ํธ ์์ ๋ฃจํธ ์์น์ ๋๋ ๊ฒ์ด ๊ด๋ก์ด๋ค. (๊ทธ๋ฆฌ๊ณ ์ด ์ค์ ์์ ๋ฐ๋ก @ComponentScan ์ด ๋ค์ด์๋ค!)
์ค๋ณต ๋ฑ๋ก๊ณผ ์ถฉ๋
- ์๋ ๋น ๋ฑ๋ก vs ์๋ ๋น ๋ฑ๋ก
- ์ปดํฌ๋ํธ ์ค์บ์ ์ํด ์๋์ผ๋ก ์คํ๋ง ๋น์ด ๋ฑ๋ก๋๋๋ฐ, ๊ทธ ์ด๋ฆ์ด ๊ฐ์ ๊ฒฝ์ฐ ์คํ๋ง์ ์ค๋ฅ๋ฅผ ๋ฐ์์ํจ๋ค.
ConflictingBeanDefinitionException
์์ธ ๋ฐ์
- ์๋ ๋น ๋ฑ๋ก vs ์๋ ๋น ๋ฑ๋ก
- ์ด ๊ฒฝ์ฐ ์๋ ๋น ๋ฑ๋ก์ด ์ฐ์ ๊ถ์ ๊ฐ์ง๋ค. (์๋ ๋น์ด ์๋ ๋น์ ์ค๋ฒ๋ผ์ด๋ฉ ํด๋ฒ๋ฆฐ๋ค.)
- ํ์ง๋ง, ์ต๊ทผ ์คํ๋ง ๋ถํธ์์๋ ์๋ ๋น ๋ฑ๋ก๊ณผ ์๋ ๋น ๋ฑ๋ก์ด ์ถฉ๋๋๋ฉด ์ค๋ฅ๊ฐ ๋ฐ์ํ๋๋ก ๊ธฐ๋ณธ ๊ฐ์ ๋ฐ๊พธ์๋ค.
๐ Reference
๋ฐ์ํ