์๋
ํ์ธ์! ์ด๋ฒ์ฃผ๋ ํ์ต๋์ด ์กฐ๊ธ ๋ฐฉ๋ํ๋ ๊ฒ ๊ฐ๋ค์!
์๋ฌด๋๋ ์ฝ๋ฉ ํ
์คํธ ์ค๋น์ ํจ๊ป KB Ai Finance ๊ณต๋ชจ์ ๊น์ง ๊ฒน์ณ ์ ๋ง ๋ฐ์ ์๊ฐ์ ๋ณด๋๊ธฐ ๋๋ฌธ์ด์๋ ๊ฒ ๊ฐ์ต๋๋ค~
ํ์ง๋ง, ์ด๋ด ๋์ผ์๋ก ๊ธฐ๋ณธ์ ์ถฉ์คํ๋ ๊ฒ์ด ์ค์ํ์ฃ !
์ค๋์ ์ด๋ฒ์ฃผ์ฐจ์ ๋ฐฐ์ด ์น ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ์์ ํต์ฌ์ด ๋๋ Spring MVC์ ํฉํ ๋ฆฌ ๋์์ธ ํจํด์ ๋ํด ์ฌ๋ ์๊ฒ ๋ค๋ค๋ณด๊ฒ ์ต๋๋ค.
Spring MVC๋ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ์ฒด๊ณ์ ์ผ๋ก ๊ตฌ์ฑํ ์ ์๋๋ก ๋์์ฃผ๋ ๊ฐ๋ ฅํ ํ๋ ์์ํฌ์
๋๋ค. ์ด ํ๋ ์์ํฌ๋ ์ ํต์ ์ธ MVC ํจํด์ ๊ธฐ๋ฐ์ผ๋ก, ์ ํ๋ฆฌ์ผ์ด์
์ Model, View, Controller์ ์ธ ๊ฐ์ง ์์๋ก ๋ถ๋ฆฌํด ๊ด๋ฆฌํฉ๋๋ค.
Model: ์ ํ๋ฆฌ์ผ์ด์
์ ํต์ฌ ๋ฐ์ดํฐ์ ๊ทธ ์ํ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ํธ์์ฉ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ผ๋ฉฐ, ์ด ๊ณผ์ ์์
DTO(Data Transfer Object),
VO(Value Object),
DAO(Data Access Object) ๋ฑ์ ๊ฐ์ฒด๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
๋ชจ๋ธ ๊ณ์ธต์ ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ์๋น์ค ๊ณ์ธต๊ณผ๋ ๋ฐ์ ํ๊ฒ ์ฐ๊ด๋ฉ๋๋ค.
View: ์ฌ์ฉ์๊ฐ ๋ฐ์ดํฐ๋ฅผ ์๊ฐ์ ์ผ๋ก ํ์ธํ ์ ์๋ ๊ณ์ธต์
๋๋ค.
JSP๋ Thymeleaf์ ๊ฐ์ ํ
ํ๋ฆฟ ์์ง์ด ์ด ์ญํ ์ ์ํํ๋ฉฐ, ์ฌ์ฉ์๊ฐ ์ํธ์์ฉํ๋ UI๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
์ด ๊ณ์ธต์ ์ปจํธ๋กค๋ฌ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌ๋ฐ์ ํ๋ฉด์ ๋ ๋๋งํฉ๋๋ค.
Controller: ์ฌ์ฉ์์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ , ๊ทธ์ ๋ง๋ ๋ฐ์ดํฐ๋ฅผ Model์์ ๊ฐ์ ธ์ View์ ์ ๋ฌํ๋ ์ญํ ์ ํฉ๋๋ค.
Spring MVC์์ ์ปจํธ๋กค๋ฌ๋ @Controller
์ @RestController
์ด๋
ธํ
์ด์
์ผ๋ก ์ ์๋๋ฉฐ, HTTP ์์ฒญ์ ๋งคํํ๊ณ ํด๋น ๋ก์ง์ ์ฒ๋ฆฌํ๋ ํต์ฌ์ ์ธ ๊ณ์ธต์
๋๋ค.
Spring MVC๋ ์ด๋ฌํ ๊ตฌ์กฐ์ ๋ถ๋ฆฌ๋ฅผ ํตํด ์ฝ๋์ ์์ง๋๋ฅผ ๋์ด๊ณ , ์ ์ง๋ณด์์ฑ์ ๊ทน๋ํํฉ๋๋ค. ํนํ ๋๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ด๋ฌํ ๊ตฌ์กฐ์ ์ค๊ณ๋ ํ์์ ์ ๋๋ค.
์คํ๋ง MVC ์ ์ ์ฒด์ ์ธ ๊ตฌ์กฐ๋
ํฉํ ๋ฆฌ ๋์์ธ ํจํด์ ๊ฐ์ฒด ์์ฑ์ ๊ตฌ์ฒด์ ์ธ ๊ณผ์ ์ ์บก์ํํ์ฌ, ํด๋ผ์ด์ธํธ ์ฝ๋์ ๊ฐ์ฒด ์์ฑ ๋ก์ง์ ๋ถ๋ฆฌํ๋ ์ค์ํ ๋์์ธ ํจํด์ ๋๋ค. Spring ํ๋ ์์ํฌ๋ ์ด ํจํด์ ํตํด ๊ฐ์ฒด ์์ฑ๊ณผ ๊ด๋ฆฌ๋ฅผ ๋์ฑ ํจ์จ์ ์ผ๋ก ์ํํฉ๋๋ค.
@Controller: ์ด ์ด๋ ธํ ์ด์ ์ Spring์ด ์น ์์ฒญ์ ์ฒ๋ฆฌํ ์ปจํธ๋กค๋ฌ ํด๋์ค๋ฅผ ๋น์ผ๋ก ๊ด๋ฆฌํ๋๋ก ํฉ๋๋ค. ์ด ๊ณผ์ ์์ ํฉํ ๋ฆฌ ํจํด์ด ์ ์ฉ๋์ด ๊ฐ์ฒด ์์ฑ์ ๋ณต์ก์ฑ์ด ์จ๊ฒจ์ง๋๋ค.
@Service: ๋น์ฆ๋์ค ๋ก์ง์ ์ฒ๋ฆฌํ๋ ํด๋์ค์ ์ ์ฉ๋๋ ์ด๋ ธํ ์ด์ ์ผ๋ก, Spring ์ปจํ ์ด๋๊ฐ ํด๋น ํด๋์ค๋ฅผ ๋น์ผ๋ก ๊ด๋ฆฌํฉ๋๋ค. ์ด๋ ๋น์ฆ๋์ค ๋ก์ง์ด ์ปจํธ๋กค๋ฌ์ ๋ถ๋ฆฌ๋์ด ๋ ๋ฆฝ์ ์ผ๋ก ๊ด๋ฆฌ๋๋๋ก ๋์์ค๋๋ค.
@Repository: ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ํธ์์ฉ์ ๋ด๋นํ๋ ๊ณ์ธต์ ์ฌ์ฉ๋๋ ์ด๋ ธํ ์ด์ ์ ๋๋ค. ๋ฐ์ดํฐ ์ ๊ทผ ๊ณ์ธต์ Spring ์ปจํ ์ด๋๊ฐ ๊ด๋ฆฌํ๋ฉฐ, ํฉํ ๋ฆฌ ํจํด์ ํตํด ๊ฐ์ฒด ์์ฑ๊ณผ ๊ด๋ฆฌ๋ฅผ ์บก์ํํฉ๋๋ค.
์ด๋ฌํ ์ด๋
ธํ
์ด์
๋ค์ Spring์ DI(Dependency Injection) ๋ฉ์ปค๋์ฆ๊ณผ ๊ฒฐํฉ๋์ด ๊ฐ์ฒด์ ์๋ช
์ฃผ๊ธฐ์ ์์กด์ฑ์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ฒ ๋ฉ๋๋ค.
Spring์ด ์ ๊ณตํ๋ ๋ค์ํ ์ด๋
ธํ
์ด์
๋ค์ ํฉํ ๋ฆฌ ๋์์ธ ํจํด์ ์๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๊ณ ์์ผ๋ฉฐ, ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ๋น์ฆ๋์ค ๋ก์ง์ ๋์ฑ ์ง์คํ ์ ์์ต๋๋ค.
ํฉํ ๋ฆฌ ๋์์ธ ํจํด์ ๊ฐ์ฒด ์์ฑ ๋ก์ง์ ๋ณ๋์ ํด๋์ค๋ ๋ฉ์๋๋ก ์บก์ํํ์ฌ ๊ฐ์ฒด ์์ฑ์ ๊ตฌ์ฒด์ ์ธ ๊ณผ์ ์ ์จ๊ธฐ๋ ๋์์ธ ํจํด์ ๋๋คโ
์ฃผ์ ํน์ง
- ๊ฐ์ฒด ์์ฑ์ ์ผ๊ด์ฑ์ ์ ์งํฉ๋๋คโ
- ๊ฐ์ฒด ์์ฑ ๊ณผ์ ์ ํด๋ผ์ด์ธํธ ์ฝ๋๋ก๋ถํฐ ๋ถ๋ฆฌํฉ๋๋ค
- ์ฝ๋์ ์ ์ฐ์ฑ๊ณผ ์ฌ์ฌ์ฉ์ฑ์ ๋์ ๋๋ค
Spring์ ์์กด์ฑ ์ฃผ์
(DI)์ ๊ฐ์ฒด ๊ฐ์ ์์กด์ฑ์ ์ปจํ
์ด๋๊ฐ ๊ด๋ฆฌํ๋๋ก ํ์ฌ ์ฝ๋์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ณ , ์ ์ฐ์ฑ์ ๊ทน๋ํํ๋ ๊ธฐ์ ์
๋๋ค. @Autowired
์ด๋
ธํ
์ด์
์ ์ด๋ฌํ ์์กด์ฑ์ ์ฃผ์
ํ๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ, ๊ฐ๋ฐ์๋ ๊ฐ์ฒด ์์ฑ์ด๋ ๊ด๋ฆฌ์ ์ ๊ฒฝ ์ฐ์ง ์๊ณ ๋ ํ์ํ ๊ฐ์ฒด๋ฅผ ๊ฐํธํ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, GreetingService
ํด๋์ค๋ฅผ ์ปจํธ๋กค๋ฌ์ ์ฃผ์
ํ๋ ค๋ฉด, ์๋์ ๊ฐ์ด @Autowired
์ด๋
ธํ
์ด์
์ ์ฌ์ฉํฉ๋๋ค:
@Autowired
private GreetingService greetingService;
์ด์ ๊ฐ์ด Spring์ ์์กด์ฑ ์ฃผ์
์ ํตํด
์ด์ฒ๋ผ ๊ฐ๋จํ ์ค์ ๋ง์ผ๋ก๋, Spring ์ปจํ
์ด๋๊ฐ ํด๋น ๊ฐ์ฒด๋ฅผ ๊ด๋ฆฌํ๊ณ ์ฃผ์
ํด์ค๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ์ฒด ๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๊ณ , ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
๋ค๋ฅธ ์ฃผ์ ์ด๋ ธํ ์ด์ ๋ค๋ ์ดํด๋ณด๊ฒ ์ต๋๋ค:
์ด๋ ธํ ์ด์ | ์ค๋ช | ํน์ง |
---|---|---|
@Controller | ์น ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์ปจํธ๋กค๋ฌ ํด๋์ค๋ก, Spring ์ปจํ ์ด๋๊ฐ ์ด๋ฅผ ๋น์ผ๋ก ์์ฑํ๊ณ ๊ด๋ฆฌ | ์ฃผ๋ก MVC ํจํด์ ์ปจํธ๋กค๋ฌ ์ญํ , HTTP ์์ฒญ ์ฒ๋ฆฌ ๋ด๋น |
@Service | ๋น์ฆ๋์ค ๋ก์ง์ ๋ด๋นํ๋ ํด๋์ค์ ์ฌ์ฉ | ๋น์ฆ๋์ค ๋ก์ง ๊ตฌํ, Spring ์ปจํ ์ด๋์ ์ํด ๋น์ผ๋ก ๊ด๋ฆฌ |
@Repository | ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ํธ์์ฉ์ ๋ด๋นํ๋ ํด๋์ค์ ์ฌ์ฉ | ๋ฐ์ดํฐ ์ ๊ทผ ๊ณ์ธต, Spring ์ปจํ ์ด๋์ ์ํด ๋น์ผ๋ก ๊ด๋ฆฌ |
@Component | ์ผ๋ฐ์ ์ธ ๋น์ผ๋ก ๋ฑ๋กํ ํด๋์ค๋ฅผ ๋ํ๋ผ ๋ ์ฌ์ฉ | Spring ์ปจํ ์ด๋์ ์ํด ๊ด๋ฆฌ๋๋ ๋น, ํน๋ณํ ์ญํ ์ด ์๋ ๊ฒฝ์ฐ ์ฌ์ฉ |
@RestController | RESTful ์น ์๋น์ค์ ์ปจํธ๋กค๋ฌ ํด๋์ค๋ก ์ฌ์ฉ | @Controller์ ์ ์ฌํ๋, ์ฃผ๋ก JSON/XML ํํ์ ๋ฐ์ดํฐ ๋ฐํ |
@Configuration | ์ค์ ํ์ผ์ ๋ํ๋ด๋ ํด๋์ค์ ์ฌ์ฉ | Spring ์ปจํ ์ด๋์ ์ํด ์ค์ ๋น์ผ๋ก ๊ด๋ฆฌ, Bean ์ ์ ํฌํจ |
@Bean | ๋ฉ์๋ ๋ ๋ฒจ์์ ์ฌ์ฉ๋๋ฉฐ, ๋ฐํ๋ ๊ฐ์ฒด๋ฅผ Spring ์ปจํ ์ด๋์์ ๋น์ผ๋ก ๊ด๋ฆฌ | ์ฃผ๋ก @Configuration ํด๋์ค ๋ด์์ ์ฌ์ฉ, ์ปค์คํ ๋น ์ ์ |
Spring MVC์ ํฉํ ๋ฆฌ ๋์์ธ ํจํด์ ๋ํด ๊ณต๋ถํ๋ฉด์ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ๊ธฐ์ด ๊ตฌ์กฐ์ ํจ์จ์ ์ธ ๊ฐ์ฒด ์์ฑ ๋ฐฉ๋ฒ์ ์ดํดํ๊ฒ ๋์์ต๋๋ค. ์ด๋ฌํ ํจํด๊ณผ ํ๋ ์์ํฌ๋ฅผ ์ ํ์ฉํ๋ฉด ์ฝ๋์ ์ ์ง๋ณด์์ฑ๊ณผ ํ์ฅ์ฑ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค.
์ด์ 2์ฃผ ํ๊ฐ ํ๋ก์ ํธ ๊ธฐ๊ฐ์ธ๋ฐ, ์ด๋ฌํ ๊ฐ๋ ๋ค์ ์ ์ตํ ํ๋ก์ ํธ์ ์ฑ๊ณต์ ์ผ๋ก ์ ์ฉํ ์ ์๋๋ก ๋ ธ๋ ฅํ๊ฒ ์ต๋๋ค. ์์ผ๋ก๋ ์ง์์ ์ธ ํ์ต์ ํตํด ๋ ๋์ ๊ฐ๋ฐ์๊ฐ ๋๊ธฐ๋ฅผ ๊ธฐ๋ํฉ๋๋ค.
์ข์ ์ ๋ณด ์ป์ด๊ฐ๋๋ค !