Spring-study๐ฑ/Spring-Basic60 Section 7-1. ๋ค์ํ ์์กด๊ด๊ณ ์ฃผ์ ๋ฐฉ๋ฒ ์์กด๊ด๊ณ ์ฃผ์ ์ ํฌ๊ฒ 4๊ฐ์ง๊ฐ ์๋ค. 1. ์์ฑ์ ์ฃผ์ 2. ์์ ์ ์ฃผ์ (setter ์ฃผ์ ) 3. ํ๋ ์ฃผ์ 4. ์ผ๋ฐ ๋ฉ์๋ ์ฃผ์ ์์ฑ์ ์ฃผ์ ์ด๋ฆ ๊ทธ๋๋ก ์์ฑ์๋ฅผ ํตํด์ ์์กด ๊ด๊ณ๋ฅผ ์ฃผ์ ๋ฐ๋ ๋ฐฉ๋ฒ์ด๋ค. ์ง๊ธ๊น์ง ์งํํ๋ ๋ฐฉ๋ฒ์ด ๋ฐ๋ก ์์ฑ์ ์ฃผ์ ํน์ง ์์ฑ์ ํธ์ถ ์์ ์ ๋ฑ 1๋ฒ๋ง ํธ์ถ๋๋ ๊ฒ์ด ๋ณด์ฅ ๋ถ๋ณ, ํ์ ์์กด๊ด๊ณ์ ์ฌ์ฉ ๋ถ๋ณ ์์กด๊ด๊ณ : ํ๋ฒ ์์ฑ๋๋ฉด ๋ฐ๋์ง ์๋๋ค. ์ฆ setter์ ๊ฐ์ด ์์ ํ ์ ์๋ ๋ฉ์๋๋ฅผ ๋ง๋ค์ง ์์์ผํ๋ค. ํ์ ์์กด๊ด๊ณ : null์ ํ์ฉํ๋ค๊ณ ๋ช ์๋์ด์๋ ๊ฒ์ด ์๋ ๊ฒฝ์ฐ ์์ฑ์์๋ ๊ฐ์ ๋ค ์ฑ์๋ฃ์ด์ผํ๋ค.(final๋ก ์ค์ ์ ํด์ค๊ฒ์ด๋ค.) ์์ฑ์ ์ฃผ์ ์ ๊ฒฝ์ฐ ๋น์ ๋ฑ๋กํ๊ธฐ ์ํด ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ์ด์ฉ ์ ์์ด ์์ฑ์๊ฐ ๊ฐ์ด ํธ์ถ๋๊ธฐ ๋๋ฌธ์ ๋น ๋ฑ๋ก๊ณผ ์์กด๊ด๊ณ ์ค.. 2022. 4. 27. Section 6-4. ์ค๋ณต ๋ฑ๋ก๊ณผ ์ถฉ๋ ์ปดํฌ๋ํธ ์ค์บ์์ ๊ฐ์ ๋น ์ด๋ฆ์ ๋ฑ๋กํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น? 1. ์๋ ๋น ๋ฑ๋ก vs ์๋ ๋น ๋ฑ๋ก (๋๋ค ์ปดํฌ๋ํธ ์ค์บ) 2. ์๋ ๋น ๋ฑ๋ก vs ์๋ ๋น ๋ฑ๋ก ์๋ ๋น ๋ฑ๋ก vs ์๋ ๋น ๋ฑ๋ก ์ค๋ณต ๋ฑ๋ก๋๋ ๊ฒฝ์ฐ ์คํ๋ง์ ์ค๋ฅ๋ฅผ ๋ฐ์์ํจ๋ค. ConflictingBeanDefinitionException ์๋ ๋น ๋ฑ๋ก vs ์๋ ๋น ๋ฑ๋ก ์๋ ์ฐ๋ฆฌ๊ฐ @Component ์ ๋ ธํ ์ด์ ์ ๋ถํ ์๋์ผ๋ก ๋น ๋ฑ๋ก๋๋ ํด๋์ค์ด๋ค. ์ด์ ๋๊ฐ์ ๋น ์ด๋ฆ(memoryMemberRepository)์ ๊ฐ์ง ๋น์ ์๋์ผ๋ก ๋ฑ๋ก์์ผ๋ณด๊ฒ ๋ค. ์คํ์์ผ๋ณด๋ ์ถฉ๋์ด ๋ฐ์ํ์ง ์๊ณ ํ ์คํธ๊ฐ ์ฑ๊ณตํ ๊ฒ์ ํ์ธํ ์ ์๋ค. ์ฝ์๋ก๊ทธ๋ฅผ ์ดํด๋ณด์. ๋ค๋ฅธ ์ ์์ ์ํด ์ค๋ฒ๋ผ์ด๋ฉ๋์๋ค๋ ๋ก๊ทธ๊ฐ ์๋ค. ์ฆ, ์๋ ๋น ๋ฑ๋ก์ด ์ฐ์ ๊ถ์ ๊ฐ์ ธ ์๋ ๋น.. 2022. 4. 26. Section 6-3. ํํฐ ๋ชจ๋ ์ฝ๋๋ ํ ์คํธ ์ฝ๋์ ์ถ๊ฐ includeFilters : ์ปดํฌ๋ํธ ์ค์บ ๋์์ ์ถ๊ฐ๋ก ์ง์ excludeFilters : ์ปดํฌ๋ํธ ์ค์บ์์ ์ ์ธํ ๋์์ ์ง์ ์ปดํฌ๋ํธ ์ค์บ ๋์์ ์ถ๊ฐํ ์ ๋ ธํ ์ด์ ์ปดํฌ๋ํธ ์ค์บ ๋์์์ ์ ์ธํ ์ ๋ ธํ ์ด์ ํด๋์ค ํ์ ์ ๋ถ๋ ์ ๋ ธํ ์ด์ ์ด๋ผ๋ ์๋ฏธ๋ก, @MyIncludeComponent๊ฐ ๋ถ์ผ๋ฉด ์ปดํฌ๋ํธ ์ค์บ์ ์ถ๊ฐ, @MyExcludeComponent๊ฐ ๋ถ์ผ๋ฉด ์ปดํฌ๋ํธ ์ค์บ์์ ์ ์ธํ๋๋ก ๋ง๋ค๊ณ ์ ํ๋ค. ์ปดํฌ๋ํธ ๋์์ผ๋ก ์ถ๊ฐ ๋ฐ ์ ์ธํ ํด๋์ค ์์ฑ ์ปดํฌ๋ํธ ๋์์ผ๋ก ์ถ๊ฐํ BeanA ์ปดํฌ๋ํธ ๋์์์ ์ ์ธํ BeanB Config์ค์ ํด๋์ค์์ Filter๋ฅผ ๋ง๋ค์ด Testํ๊ธฐ includeFilters๋ฅผ ์ฌ์ฉํ์ฌ Filterํ์ ์ ANNOTATION์ผ๋ก ํ์ฌ, .. 2022. 4. 26. Section 6-2. ํ์ ์์น์ ๊ธฐ๋ณธ ์ค์บ ๋์ ํ์ํ ํจํค์ง์ ์์ ์์น ์ง์ ๋ชจ๋ ํด๋์ค๋ฅผ ๋ค ์ปดํฌ๋ํธ ์ค์บํ๋ฉด ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค. ๊ทธ๋์ ๊ผญ ํ์ํ ์์น๋ถํฐ ์ค์บํ๋๋ก ์์ ์์น๋ฅผ ์ง์ ํ ์ ์๋ค. basePackages๋ฅผ ์ฌ์ฉํ์ฌ ์ค์บํ ๋ฒ์๋ฅผ ์ง์ ํ๋ค. ์์ ๊ฐ์ด ์์ฑํ๋ฉด memberํจํค์ง ๋ด์์๋ง ์ปดํฌ๋ํธ ์ค์บ์ ์งํํ์ฌ memberServiceImpl๊ณผ memberMemberRepository๋ง ๋น์ผ๋ก ๋ฑ๋ก๋๋ค. ํ์ธํด๋ณด๋ฉด ์์ ๊ฐ์ด 3๊ฐ๋ง ๋น์ผ๋ก ๋ฑ๋ก๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. basePackages = {"hello.core", "hello.service"} ์ ๊ฐ์ด ์ฌ๋ฌ ์์ ์์น๋ฅผ ์ง์ ํ ์๋ ์๋ค. ๋ํ, ์์ ๊ฐ์ด basePackageClasses๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ฌ ํด๋์ค์ ํจํค์ง๋ฅผ ์ง์ ํ๋ ๊ฒ์ด๋ค. hello.core๋ฅผ ์์์์น.. 2022. 4. 9. Section 6-1. ์ปดํฌ๋ํธ ์ค์บ๊ณผ ์์กด๊ด๊ณ ์๋ ์ฃผ์ ์์ํ๊ธฐ ์ง๊ธ๊น์ง ์คํ๋ง ๋น์ ๋ฑ๋กํ ๋๋ ์๋ฐ ์ฝ๋์ @Bean์ด๋ XML์ ๋ฑ์ ํตํด์ ์ค์ ์ ๋ณด์ ์ง์ ๋ฑ๋กํ ์คํ๋ง ๋น์ ๋์ดํ๋ค. ์ด๋ ๊ฒ ๋ฑ๋กํด์ผํ ๋น์ด ์์ญ, ์๋ฐฑ๊ฐ๊ฐ ๋๋ฉด ์ผ์ผ์ด ๋ฑ๋กํ๊ธฐ๋ ๊ท์ฐฎ๊ณ , ์ค์ ์ ๋ณด๋ ์ปค์ง๊ณ , ๋๋ฝํ๋ ๋ฌธ์ ๋ ๋ฐ์ํ๋ค. ๊ทธ๋์ ์คํ๋ง์ ์ค์ ์ ๋ณด๊ฐ ์์ด๋ ์๋์ผ๋ก ์คํ๋ง ๋น์ ๋ฑ๋กํ๋ ์ปดํฌ๋ํธ ์ค์บ์ด๋ผ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. ์์กด๊ด๊ณ๋ ์๋์ผ๋ก ์ฃผ์ ํ๋ @Autowired ๋ผ๋ ๊ธฐ๋ฅ๋ ์ ๊ณตํ๋ค. ์ปดํฌ๋ํธ ์ค์บ์ ์ฌ์ฉํ๋ ค๋ฉด ๋จผ์ @ComponentScan ์ ์ค์ ์ ๋ณด์ ๋ถ์ฌ์ฃผ๋ฉด ๋๋ค. ๊ธฐ์กด์ AppConfig์๋ ๋ค๋ฅด๊ฒ @Bean์ผ๋ก ๋ฑ๋กํ ํด๋์ค๊ฐ ํ๋๋ ์๋ค! @ComponentScan ์ ๋ ธํ ์ด์ ์ @component๊ฐ ๋ถ์ ํด๋์ค๋ฅผ ๋ชจ๋ ์ค์บํ์ฌ ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋กํด์ค๋ค... 2022. 4. 9. ์ด์ 1 2 3 4 5 6 7 8 ยทยทยท 12 ๋ค์