์คํ๋ง MVC 1ํธ์ ๊ฐ์ ๋ด์ฉ์ ์ ๋ฆฌํ ํฌ์คํ ์ ๋๋ค. HttpServletRequest ์์ ํฌ์คํ ์์ ์๋ธ๋ฆฟ์ ๊ฐ๋ฐ์๊ฐ ์์ฒญ ๋ฐ ์๋ต ์ ๋ณด๋ฅผ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ์ง์ํ๋ฉฐ, ์ด๋ WAS๊ฐ HTTP ์์ฒญ ์ ์์ฒญ ๋ฐ ์๋ต ๊ฐ์ฒด๋ฅผ ์๋ก ๋ง๋ ๋ค ์๋ธ๋ฆฟ ๊ฐ์ฒด๋ฅผ ํธ์ถํ๋ ๊ณผ์ ์ ๊ฑฐ์น๋ค๋ ๊ฒ์ ์ค๋ช ํ์๋ค. ์๋ธ๋ฆฟ์ ๊ฐ๋ฐ์๊ฐ HTTP ์์ฒญ ๋ฉ์์ง๋ฅผ ํธ๋ฆฌํ๊ฒ ์ด์ฉํ ์ ์๋๋ก ๊ฐ๋ฐ์ ๋์ ์์ฒญ ๋ฉ์์ง๋ฅผ ํ์ฑ ํ๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ HttpServletRequest๋ผ๋ ๊ฐ์ฒด์ ๋ด์์ ์ ๊ณตํ๋๋ฐ, ํด๋น ๊ฐ์ฒด๋ฅผ ์ด์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ ๋ณด๋ฅผ ํธ๋ฆฌํ๊ฒ ์กฐํํ ์ ์๋ค. 1. Start Line: HTTP ๋ฉ์๋, URL, ์ฟผ๋ฆฌ ์คํธ๋ง, ํ๋กํ ์ฝ 2. ํค๋: ํค๋ ์กฐํ 3. ๋ฐ๋: form ํ๋ผ๋ฏธํฐ ํ์ ์กฐํ, ๋ฉ์์ง ๋ฐ๋..
์คํ๋ง MVC 1ํธ์ ๊ฐ์ ๋ด์ฉ์ ์ ๋ฆฌํ ํฌ์คํ ์ ๋๋ค. ์น ์๋ฒ, ์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ ์น ์๋ฒ (Web Server) HTTP ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๋ฉฐ, ์ฃผ๋ก ์ ์ ๋ฆฌ์์ค๋ฅผ ์ ๊ณตํ๋ค. Nginx๋ Apache๊ฐ ์น ์๋ฒ์ ์ํ๋ค. ์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ (WAS - Web Application Server) HTTP ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๋ฉฐ, ์น ์๋ฒ์ ๊ธฐ๋ฅ์ ํฌํจํจ๊ณผ ๋์์ ๋์ HTML, HTTP API, JSP์ ๊ฐ์ ํ๋ก๊ทธ๋จ ์ฝ๋๋ฅผ ์คํํด ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง์ ์ํํ ์ ์๋ค. Tomcat์ด ๋ํ์ ์ผ๋ก WAS์ ์ํ๋ค. ์น ์๋ฒ์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ ์น ์๋ฒ๋ ์ ์ ๋ฆฌ์์ค๋ฅผ, ์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง์ ์ฃผ๋ก ๋ด๋นํ๋ค๊ณ ํ์ง๋ง, ์น ์๋ฒ๋ ํ๋ก๊ทธ๋จ์ ์คํํ๋ ๊ธฐ๋ฅ์ ํฌํจํ๊ธฐ๋ ํ๊ณ ์น ์ ํ๋ฆฌ์ผ์ด์ ..
์คํ๋ง ํต์ฌ ์๋ฆฌ์ ๊ฐ์ ๋ด์ฉ์ ์ ๋ฆฌํ ํฌ์คํ ์ ๋๋ค. ๋น ์ค์ฝํ๋? ๋ง ๊ทธ๋๋ก ๋น์ด ์กด์ฌํ ์ ์๋ ๋ฒ์๋ฅผ ๋ปํ๋ค. ์ง๊ธ๊น์ง๋ ์คํ๋ง ๋น์ด ์คํ๋ง ์ปจํ ์ด๋์ ์์๊ณผ ํจ๊ป ์์ฑ๋์ด ์คํ๋ง ์ปจํ ์ด๋๊ฐ ์ข ๋ฃ๋ ๋๊น์ง ์ ์ง๋๋ค๊ณ ํ์ตํ์๋๋ฐ, ์ด๊ฒ์ ์คํ๋ง ๋น์ด ๊ธฐ๋ณธ์ ์ผ๋ก ์ฑ๊ธํค ์ค์ฝํ๋ก ์์ฑ๋๊ธฐ ๋๋ฌธ์ด๋ค. ์คํ๋ง์ ๋ค์๊ณผ ๊ฐ์ด ๋ค์ํ ์ค์ฝํ๋ฅผ ์ง์ํ๋ค. 1. ์ฑ๊ธํค: ๊ธฐ๋ณธ ์ค์ฝํ๋ก ์คํ๋ง ์ปจํ ์ด๋์ ์์๊ณผ ์ข ๋ฃ๊น์ง ์ ์ง๋๋ ๊ฐ์ฅ ๋์ ๋ฒ์์ ์ค์ฝํ์ด๋ค. 2. ํ๋กํ ํ์ : ์คํ๋ง ์ปจํ ์ด๋๋ ํ๋กํ ํ์ ๋น์ ์์ฑ๊ณผ ์์กด ๊ด๊ณ ์ฃผ์ , ์ด๊ธฐํ๊น์ง๋ง ๊ด์ฌํ๊ณ ๊ทธ ์ด์ ๊ด๋ฆฌํ์ง ์๋ ์งง์ ๋ฒ์์ ์ค์ฝํ์ด๋ค. 3. ์น ๊ด๋ จ ์ค์ฝํ 3-1 request: ์น ์์ฒญ์ด ๋ค์ด์ค๊ณ ๋๊ฐ ๋๊น์ง ์ ์ง๋๋ ์ค์ฝํ์ด๋ค. 3-2 sess..
์คํ๋ง ํต์ฌ ์๋ฆฌ์ ๊ฐ์ ๋ด์ฉ์ ์ ๋ฆฌํ ํฌ์คํ ์ ๋๋ค. ์์กด๊ด๊ณ ์ฃผ์ ์์ ์์ผ ํต์ ์ฒ๋ผ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ง์ ์ ํ์ํ ์ฐ๊ฒฐ์ ๋ฏธ๋ฆฌ ํด๋๊ณ , ์ ํ๋ฆฌ์ผ์ด์ ์ข ๋ฃ ์์ ์ ์ฐ๊ฒฐ์ ๋ชจ๋ ์ข ๋ฃํ๋ ์์ ์ ์งํํ๋ ค๋ฉด ๊ฐ์ฒด์ ์ด๊ธฐํ์ ์ข ๋ฃ ์์ ์ด ํ์ํ๋ค. ์คํ๋ง์ ์ด๋ฌํ ์ด๊ธฐํ/์ข ๋ฃ ์์ ์ ์ด๋ป๊ฒ ์งํํ ๊น? ์คํ๋ง ๋น์ ๊ธฐ๋ณธ์ ์ผ๋ก '๊ฐ์ฒด ์์ฑ โ ์์กด ๊ด๊ณ ์ฃผ์ '์ ๋ผ์ดํ์ฌ์ดํด์ ๊ฐ์ง๋ค. ๋น์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ์์กด๊ด๊ณ ์ฃผ์ ์ด ๋ชจ๋ ๋๋ ์ดํ์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ์ ์๋ ์ค๋น๊ฐ ๊ฐ์ถฐ์ง๋ ๊ฒ์ด๋ฏ๋ก, ๋ฐ์ดํฐ ์ด๊ธฐํ ์์ ์ ์์กด ๊ด๊ณ ์ฃผ์ ์ด ๋ชจ๋ ์๋ฃ๋๊ณ ๋ ๋ค์์ ํธ์ถํด์ผ ํ๋ค. ์ฑ๊ธํค ๋ฐฉ์์์ ์คํ๋ง ๋น์ ๋ค์๊ณผ ๊ฐ์ ์ด๋ฒคํธ ๋ผ์ดํ์ฌ์ดํด์ ๊ฐ์ง๋ค. (1) ์คํ๋ง ์ปจํ ์ด๋ ์์ฑ โ (2) ์คํ๋ง ๋น ์์ฑ โ (3) ์์กด ..
์คํ๋ง ํต์ฌ ์๋ฆฌ์ ๊ฐ์ ๋ด์ฉ์ ์ ๋ฆฌํ ํฌ์คํ ์ ๋๋ค. ์กฐํ ๋น์ด 2๊ฐ ์ด์์ผ ๋ ๋ฌธ์ ์ @Autowired๋ ํ์ ์ผ๋ก ๋น์ ์กฐํํ๊ธฐ ๋๋ฌธ์, ์ค์ ๋ก๋ ๋ ๋ง์ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง๋ง ac.getBean(DiscountPolicy.class)์ ์ ์ฌํ๊ฒ ๋์ํ๋ค. ์ด๋ DiscountPolicy์ ํ์ ํ์ ์ด ๋ ๊ฐ ์ด์ ์กด์ฌํ ๊ฒฝ์ฐ @Autowired๋ ํ ๊ฐ๊ฐ ์๋ ์คํ๋ง ๋น์ผ๋ก ๋ฑ๋ก๋ ํ์ ํ์ ํด๋์ค์ ๊ฐ์๋งํผ ์ค๋ณต๋ ๋น์ ์ฐพ๊ฒ ๋๊ณ , NoUniqueBeanDefinitionException์ด ๋ฐ์ํ๊ฒ ๋๋ค. ๊ทธ๋ ๋ค๊ณ ํด์ ํ์ ํ์ ์ผ๋ก ๋น์ ์กฐํํ๋ ๊ฒ์ ์๋์ ๊ฐ์ด ๋ ๊ฐ์ง ๋ฌธ์ ์ ์ด ์กด์ฌํ๋ค. 1. DIP๋ฅผ ์๋ฐฐํจ๊ณผ ๋๋ถ์ด ์ฝ๋์ ์ ์ฐ์ฑ์ด ๋จ์ด์ง๋ค. 2. ๋น ์ด๋ฆ์ ๋ค๋ฅด์ง๋ง ํ์ ์ด ๋์ผํ ๊ฒฝ์ฐ ๋ฌธ์ ๋ฅผ..
์คํ๋ง ํต์ฌ ์๋ฆฌ์ ๊ฐ์ ๋ด์ฉ์ ์ ๋ฆฌํ ํฌ์คํ ์ ๋๋ค. ์์กด๊ด๊ณ ์ฃผ์ ๋ฐฉ๋ฒ ์์ฑ์ ์ฃผ์ ์์ฑ์๋ฅผ ํตํด ์์กด ๊ด๊ณ๋ฅผ ์ฃผ์ ๋ฐ๋ ๋ฐฉ๋ฒ์ผ๋ก, ์์ฑ์ ํธ์ถ ์์ ์ ๋ฑ ํ ๋ฒ๋ง ํธ์ถ๋๋ฉฐ ๋ถ๋ณ ํน์ ํ์์ ์ธ ์์กด ๊ด๊ณ ์ฃผ์ ์ ์ฌ์ฉ๋๋ค. ์์ฑ์๊ฐ ํ ๊ฐ๋ง ์์ ๊ฒฝ์ฐ ์คํ๋ง ๋น์ ํํด์ @Autowired๋ฅผ ์๋ตํด๋ ์๋์ผ๋ก ์์กด ๊ด๊ณ๊ฐ ์ฃผ์ ๋๋ค. @Component public class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired public OrderServiceImpl(MemberRepositor..
์คํ๋ง ํต์ฌ ์๋ฆฌ์ ๊ฐ์ ๋ด์ฉ์ ์ ๋ฆฌํ ํฌ์คํ ์ ๋๋ค. ์ฑ๊ธํค ํจํด ํด๋์ค์ ์ธ์คํด์ค๊ฐ 1๊ฐ๋ง ์์ฑ๋๋ ๊ฒ์ ๋ณด์ฅํ๋ ๋์์ธ ํจํด์ด๋ค. ์คํ๋ง์ด ์๋ ์์ํ DI(Dependency Injection) ์ปจํ ์ด๋๋ฅผ ์ด์ฉํ๋ค๊ณ ๊ฐ์ ํด๋ณด์. DI ์ปจํ ์ด๋์ธ AppConfig๋ ์๋ก์ด ์์ฒญ์ด ๋ค์ด์ฌ ๋๋ง๋ค ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ๋ฐํํ๋๋ฐ, ํธ๋ํฝ์ด ์ฆ๊ฐํ ์๋ก ์์ฑ๋๋ ๊ฐ์ฒด๊ฐ ๋ง์์ง์ ๋ฐ๋ผ ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๋ ์ฌํด์ง๋ค๋ ๋จ์ ์ด ์กด์ฌํ๋ค. ์ด๋ฌํ ํด๊ฒฐ๋ฐฉ์์ผ๋ก์จ ๊ฐ์ ๊ฐ์ฒด๋ ๋ฑ 1๊ฐ๋ง ์์ฑ๋๋๋ก ํ์ฌ ๊ฐ์ฒด๋ฅผ ๊ณต์ ํ๊ฒ๋ ์ค๊ณํ๋ ๋ฐฉ๋ฒ์ ์ด์ฉํ ์ ์๋๋ฐ, ํด๋น ๋ฐฉ๋ฒ์ด ์ฑ๊ธํค ํจํด์ ์ด์ฉํ๋ ๊ฒ์ด๋ค. public class SingletonService { private static final SingletonService ..
์์ ํ ํ์ผ์ add ํ๋ ค๊ณ ํ๋ ์๋์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์๋ค. fatal: Unable to create 'ํ๋ก์ ํธ ๊ฒฝ๋ก/.git/index.lock': File exists. Another git process seems to be running in this repository, e.g.an editor opened by 'git commit'. Please make sure all processes are terminated then try again. If it still fails, a git process remove the file manually to continue. ์ปค๋ฐ์ ํ๋ ๊ณผ์ ์์ ์ด์ด๋ ์๋ํฐ๊ฐ ๋ฐ๋ก ์์๊ธฐ ๋๋ฌธ์ ํ์ผ์ ์ญ์ ํ๋ ๋ฐฉ๋ฒ์ ์ ํํ์๋ค. ํ๋ก์ ํธ๊ฐ ์๋ ๊ฒฝ๋ก ์์..