Spring/Spring ๊ธฐ๋ณธ
์ค์ฝํ์ ํ๋ก์ ํ๋ก์ ๋ฐฉ์์ ์ฌ์ฉ @Scope(value = "request", proxyMode = ScopedProxyMode.TARGET_CLASS) public class MyLogger { ์ ์ฉ ๋์์ด ์ธํฐํ์ด์ค๊ฐ ์๋ ํด๋์ค๋ฉด TARGET_CLASS ๋ฅผ ์ ํ ์ ์ฉ ๋์์ด ์ธํฐํ์ด์ค๋ฉด INTERFACES ๋ฅผ ์ ํ ์ด๋ ๊ฒ ํ๋ฉด MyLogger์ ๊ฐ์ง ํ๋ก์ ํด๋์ค๋ฅผ ๋ง๋ค์ด๋๊ณ HTTP request์ ์๊ด ์์ด ๊ฐ์ง ํ๋ก์ํด๋์ค๋ฅผ ๋ค๋ฅธ ๋น์ ๋ฏธ๋ฆฌ ์ฃผ์
ํด ๋ ์ ์๋ค. ์น ์ค์ฝํ์ ํ๋ก์ ๋์ ์๋ฆฌ ์ง์ง myLogger ๊ฐ ์๋ ๊ฐ์ง(๊ป๋ฐ๊ธฐ,ํ๋ก์) myLogger ๋ฅผ ์์ฑํ์ฌ ์ปจํ
์ด๋์ ์ง์ด ๋ฃ์ด๋๋ค ๊ทธ๋ฆฌ๊ณ ์ค์ ๋ด๊ฐ ๊ธฐ๋ฅ์ ์ค์ ํธ์ถํ๋ ์์ ์ ์ง์ง๋ฅผ ์ฐพ์์ ๋์ํ๋ค (๋ง์น Provider ๋..
Spring/Spring ๊ธฐ๋ณธ
์น ์ค์ฝํ ์น ์ค์ฝํ๋ ์น ํ๊ฒฝ์์๋ง ๋์ํ๋ค. ์น ์ค์ฝํ๋ ํ๋กํ ํ์
๊ณผ ๋ค๋ฅด๊ฒ ์คํ๋ง์ด ํด๋น ์ค์ฝํ์ ์ข
๋ฃ์์ ๊น์ง ๊ด๋ฆฌํ๋ค. ๋ฐ๋ผ์ ์ข
๋ฃ ๋ฉ์๋๊ฐ ํธ์ถ๋๋ค. ์น ์ค์ฝํ ์ข
๋ฅ request: HTTP ์์ฒญ ํ๋๊ฐ ๋ค์ด์ค๊ณ ๋๊ฐ ๋ ๊น์ง ์ ์ง๋๋ ์ค์ฝํ ๊ฐ๊ฐ์ HTTP ์์ฒญ๋ง๋ค ๋ณ๋์ ๋น ์ธ์คํด์ค๊ฐ ์์ฑ๋๊ณ , ๊ด๋ฆฌ๋๋ค. session: HTTP Session๊ณผ ๋์ผํ ์๋ช
์ฃผ๊ธฐ๋ฅผ ๊ฐ์ง๋ ์ค์ฝํ application: ์๋ธ๋ฆฟ ์ปจํ
์คํธ( ServletContext )์ ๋์ผํ ์๋ช
์ฃผ๊ธฐ๋ฅผ ๊ฐ์ง๋ ์ค์ฝํ websocket: ์น ์์ผ๊ณผ ๋์ผํ ์๋ช
์ฃผ๊ธฐ๋ฅผ ๊ฐ์ง๋ ์ค์ฝํ request: HTTP ์์ฒญ ํ๋๊ฐ ๋ค์ด์ค๊ณ ๋๊ฐ ๋ ๊น์ง ์ ์ง๋๋ ์ค์ฝํ ๊ฐ๊ฐ์ HTTP ์์ฒญ๋ง๋ค ๋ณ๋์ ๋น ์ธ์คํด์ค๊ฐ ์์ฑ๋๊ณ , ๊ด๋ฆฌ๋๋ค. ๋์์..
Spring/Spring ๊ธฐ๋ณธ
ํ๋กํ ํ์
์ค์ฝํ - ์ฑ๊ธํค ๋น๊ณผ ํจ๊ป ์ฌ์ฉ์ ๋ฌธ์ ์ ์คํ๋ง ์ปจํ
์ด๋์ ํ๋กํ ํ์
์ค์ฝํ์ ๋น์ ์์ฒญํ๋ฉด ํญ์ ์๋ก์ด ๊ฐ์ฒด ์ธ์คํด์ค๋ฅผ ์์ฑํด์ ๋ฐํํ๋ค. ํ์ง๋ง ์ฑ๊ธํค ๋น๊ณผ ํจ๊ป ์ฌ์ฉํ ๋๋ ์๋ํ ๋๋ก ์ ๋์ํ์ง ์์ผ๋ฏ๋ก ์ฃผ์ํด์ผ ํ๋ค. ์์ clientBean ์ด๋ผ๋ ์ฑ๊ธํค ๋น์ด ์์กด๊ด๊ณ ์ฃผ์
์ ํตํด์ ํ๋กํ ํ์
๋น์ ์ฃผ์
๋ฐ์์ ์ฌ์ฉํ๋ ์๋ฅผ ๋ณด์. void prototypeFind() { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(PrototypeBean.class, ClientBean.class); clientBean ์ ์ฑ๊ธํค์ด๋ฏ๋ก, ๋ณดํต ์คํ๋ง ์ปจํ
์ด๋ ์์ฑ ์์ ์ ํจ๊ป ์์ฑ๋๊ณ , ์์กด๊ด๊ณ ์ฃผ์
..
Spring/Spring ๊ธฐ๋ณธ
๋น ์ค์ฝํ๋? ์คํ๋ง ๋น์ด ์คํ๋ง ์ปจํ
์ด๋์ ์์๊ณผ ํจ๊ป ์์ฑ๋์ด์ ์คํ๋ง ์ปจํ
์ด๋๊ฐ ์ข
๋ฃ๋ ๋ ๊น์ง ์ ์ง๋๋ค๊ณ ํ์ตํ๋ค. ์ด๊ฒ์ ์คํ๋ง ๋น์ด ๊ธฐ๋ณธ์ ์ผ๋ก ์ฑ๊ธํค ์ค์ฝํ๋ก ์์ฑ๋๊ธฐ ๋๋ฌธ์ด๋ค. ์ค์ฝํ๋ ๋ฒ์ญ ๊ทธ๋๋ก ๋น์ด ์กด์ฌํ ์ ์๋ ๋ฒ์๋ฅผ ๋ปํ๋ค. ๋ค์ํ ์ค์ฝํ ์ง์ ์ฑ๊ธํค: ๊ธฐ๋ณธ ์ค์ฝํ, ์คํ๋ง ์ปจํ
์ด๋์ ์์๊ณผ ์ข
๋ฃ๊น์ง ์ ์ง๋๋ ๊ฐ์ฅ ๋์ ๋ฒ์์ ์ค์ฝํ์ด๋ค. ํ๋กํ ํ์
: ์คํ๋ง ์ปจํ
์ด๋๋ ํ๋กํ ํ์
๋น์ ์์ฑ๊ณผ ์์กด๊ด๊ณ ์ฃผ์
๊น์ง๋ง ๊ด์ฌํ๊ณ ๋๋ ๊ด๋ฆฌํ์ง ์๋ ๋งค์ฐ ์งง์ ๋ฒ์์ ์ค์ฝํ์ด๋ค. ์น ๊ด๋ จ ์ค์ฝํ request: ์น ์์ฒญ์ด ๋ค์ด์ค๊ณ ๋๊ฐ๋ ๊น์ง ์ ์ง๋๋ ์ค์ฝํ์ด๋ค. session: ์น ์ธ์
์ด ์์ฑ๋๊ณ ์ข
๋ฃ๋ ๋ ๊น์ง ์ ์ง๋๋ ์ค์ฝํ์ด๋ค. application: ์น์ ์๋ธ๋ฆฟ ์ปจํ
์คํธ์ ๊ฐ์ ๋ฒ์..
Spring/Spring ๊ธฐ๋ณธ
๋น ์๋ช
์ฃผ๊ธฐ ์ฝ๋ฐฑ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ปค๋ฅ์
ํ์ด๋, ๋คํธ์ํฌ ์์ผ์ฒ๋ผ ์ ํ๋ฆฌ์ผ์ด์
์์ ์์ ์ ํ์ํ ์ฐ๊ฒฐ์ ๋ฏธ๋ฆฌ ํด๋๊ณ , ์ ํ๋ฆฌ์ผ์ด์
์ข
๋ฃ ์์ ์ ์ฐ๊ฒฐ์ ๋ชจ๋ ์ข
๋ฃํ๋ ์์
์ ์งํํ๋ ค๋ฉด, ๊ฐ์ฒด์ ์ด๊ธฐํ์ ์ข
๋ฃ ์์
์ด ํ์ํ๋ค. ์ด๋ฒ์๊ฐ์๋ ์คํ๋ง์ ํตํด ์ด๋ฌํ ์ด๊ธฐํ ์์
๊ณผ ์ข
๋ฃ ์์
์ ์ด๋ป๊ฒ ์งํํ๋์ง ์์ ๋ก ์์๋ณด์. ์ฐธ๊ณ : ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ปค๋ฅ์
ํ ๋๋ณด๊ธฐ WAS(Web Application Server)์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ด์ ์ฐ๊ฒฐ์๋ ๋ง์ ๋น์ฉ์ด ๋ ๋ค ์๋ฒ๊ฐ DB์ ์ฐ๊ฒฐํ๊ธฐ ์ํ Connecting ๋น์ฉ์ด ๊ฐ์ฅ ํฐ ๋น์จ์ ์ฐจ์งํ๋ค. ์ด์ฒ๋ผ Connection์ ์์ฑํ๋ ์์
์ ๋น์ฉ์ด ๋ง์ด ๋๋ ์์
์ด๋ค. ์ด๋ฅผ ๋ณด์ํ ์ ์๋ ๋ฐฉ๋ฒ์ด ๋ฐ๋ก Connection Pool์ด๋ค. ์ปค๋ฅ์
ํ(Connection ..
Spring/Spring ๊ธฐ๋ณธ
์กฐํํ ๋น์ด ๋ชจ๋ ํ์ํ ๋, List, Map ์๋์ ์ผ๋ก ์ ๋ง ํด๋น ํ์
์ ์คํ๋ง ๋น์ด ๋ค ํ์ํ ๊ฒฝ์ฐ๋ ์๋ค. ์๋ฅผ ๋ค์ด์ ํ ์ธ ์๋น์ค๋ฅผ ์ ๊ณตํ๋๋ฐ, ํด๋ผ์ด์ธํธ๊ฐ ํ ์ธ์ ์ข
๋ฅ(rate, fix)๋ฅผ ์ ํํ ์ ์๋ค๊ณ ๊ฐ์ ํด๋ณด์. ์คํ๋ง์ ์ฌ์ฉํ๋ฉด ์์ ๋งํ๋ ์ ๋ต ํจํด์ ๋งค์ฐ ๊ฐ๋จํ๊ฒ ๊ตฌํํ ์ ์๋ค. @Test void findAllBean() { ApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class,DiscountService.class); new AnnotationConfigApplicationContext() ๋ฅผ ํตํด ์คํ๋ง ์ปจํ
์ด๋๋ฅผ ์์ฑํ๋ค. AutoAppConfig.class , DiscountS..
Spring/Spring ๊ธฐ๋ณธ
์กฐํ ๋น์ด 2๊ฐ ์ด์ - ๋ฌธ์ @Component public class FixDiscountPolicy implements DiscountPolicy { @Component public class RateDiscountPolicy implements DiscountPolicy { DiscountPolicy ์ ํ์ ํ์
์ธ FixDiscountPolicy , RateDiscountPolicy ๋๋ค ์คํ๋ง ๋น์ผ๋ก ์ ์ธ ์คํ๋ง ๋น ์กฐํ์์ ํ์ตํ๋ฏ์ด ํ์
์ผ๋ก ์กฐํํ๋ฉด ์ ํ๋ ๋น์ด 2๊ฐ ์ด์์ผ ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. @Autowired public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.me..
Spring/Spring ๊ธฐ๋ณธ
์์ฑ์ ์ฃผ์
์ ์ ํํด๋ผ! ๊ณผ๊ฑฐ์๋ ์์ ์ ์ฃผ์
๊ณผ ํ๋ ์ฃผ์
์ ๋ง์ด ์ฌ์ฉํ์ง๋ง, ์ต๊ทผ์๋ ์คํ๋ง์ ํฌํจํ DI ํ๋ ์์ํฌ ๋๋ถ๋ถ์ด ์์ฑ์ ์ฃผ์
์ ๊ถ์ฅํ๋ค. ๊ทธ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ๋ค. ๋ถ๋ณ ๋๋ถ๋ถ์ ์์กด๊ด๊ณ ์ฃผ์
์ ํ๋ฒ ์ผ์ด๋๋ฉด ์ ํ๋ฆฌ์ผ์ด์
์ข
๋ฃ์์ ๊น์ง ์์กด๊ด๊ณ๋ฅผ ๋ณ๊ฒฝํ ์ผ์ด ์๋ค. ์คํ๋ ค ๋๋ถ๋ถ์ ์์กด๊ด๊ณ๋ ์ ํ๋ฆฌ์ผ์ด์
์ข
๋ฃ ์ ๊น์ง ๋ณํ๋ฉด ์๋๋ค.(๋ถ๋ณํด์ผ ํ๋ค.) ์์ ์ ์ฃผ์
์ ์ฌ์ฉํ๋ฉด, setXxx ๋ฉ์๋๋ฅผ public์ผ๋ก ์ด์ด๋์ด์ผ ํ๋ค. ๋๊ตฐ๊ฐ ์ค์๋ก ๋ณ๊ฒฝํ ์ ๋ ์๊ณ , ๋ณ๊ฒฝํ๋ฉด ์๋๋ ๋ฉ์๋๋ฅผ ์ด์ด๋๋ ๊ฒ์ ์ข์ ์ค๊ณ ๋ฐฉ๋ฒ์ด ์๋๋ค. ์์ฑ์ ์ฃผ์
์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋ ๋ฑ 1๋ฒ๋ง ํธ์ถ๋๋ฏ๋ก ์ดํ์ ํธ์ถ๋๋ ์ผ์ด ์๋ค. ๋ฐ๋ผ์ ๋ถ๋ณํ๊ฒ ์ค๊ณํ ์ ์๋ค. final ํค์๋ ์์ฑ์ ์ฃผ์
์ ์ฌ์ฉํ๋ฉด ํ๋์ ..