๐ก Bank App ํ๋ก์ ํธ์ ๋ชฉํ
Spring Boot ํ๋ ์์ํฌ ๊ธฐ๋ฐ: Spring Boot์ ๊ธฐ๋ณธ ๋์ ์๋ฆฌ๋ฅผ ์ดํดํ๊ณ ํ์ฉํฉ๋๋ค. ์ด๋ฅผ ํตํด, ๊ฐ๋ฐ์๋ Spring Boot๋ฅผ ์ฌ์ฉํ์ฌ ๋น ๋ฅด๊ณ ํจ์จ์ ์ผ๋ก ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค.
MVC ํจํด ๊ตฌํ: JSP(JavaServer Pages) ํ ํ๋ฆฟ ์์ง์ ์ฌ์ฉํ์ฌ MVC(Model-View-Controller) ํจํด์ ๊ตฌํํฉ๋๋ค. MVC ํจํด์ ํตํด ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์กฐ๋ฅผ ๋ช ํํ๊ฒ ๋ถ๋ฆฌํจ์ผ๋ก์จ, ์ ์ง๋ณด์์ฑ๊ณผ ํ์ฅ์ฑ์ด ํฅ์๋ฉ๋๋ค.
๋น์ฆ๋์ค ๋ก์ง ์์ฑ: ํ๋ก์ ํธ ๋ด์์ ํ์ํ ๋น์ฆ๋์ค ๋ก์ง์ ์ค๊ณํ๊ณ ๊ตฌํํฉ๋๋ค. ์ด ๊ณผ์ ์์ Spring Boot์ ๋ค์ํ ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ, ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๋ ๋น์ฆ๋์ค ๋ก์ง์ ๊ฐ๋ฐํฉ๋๋ค.
DB ์ ๊ทผ ๊ธฐ์ ํ์ฉ: ๋ง์ด๋ฐํฐ์ค(MyBatis)๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ ๊ธฐ์ ์ ํ์ตํ๊ณ ์ ์ฉํฉ๋๋ค. MyBatis๋ฅผ ํ์ฉํจ์ผ๋ก์จ, SQL ์ฟผ๋ฆฌ๋ฅผ ๋ณด๋ค ์ฝ๊ฒ ์์ฑํ๊ณ ๊ด๋ฆฌํ ์ ์์ผ๋ฉฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ํธ์์ฉ์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค.
์ด ํ๋ก์ ํธ๋ Spring Boot์ JSP๋ฅผ ์ฌ์ฉํ์ฌ MVC ํจํด์ ๊ตฌํํ๊ณ , ๋น์ฆ๋์ค ๋ก์ง์ ์์ฑํ๋ ๋์์, MyBatis๋ฅผ ํตํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ ๋ฐฉ๋ฒ์ ํ๊ตฌํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค.
ํ๋ก์ ํธ ์์ฑ
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.3'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'com.h2database:h2'
runtimeOnly 'com.mysql:mysql-connector-j'
annotationProcessor 'org.projectlombok:lombok'
providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter-test:3.0.3'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
mybatis ๋ฒ์ 3.x.x ์ด์ ์ด์ด์ผ ์ ์ ๋์ ํฉ๋๋ค.
https://mybatis.org/mybatis-3/ko/index.html
ํธํ ๋ฒ์ ํ์ธ
https://mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/index.html
JSP๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ์์กด์ฑ ์ถ๊ฐ
// ์์กด์ฑ ์ถ๊ฐ
implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
// implementation 'javax.servlet:jstl' spring 3.x.x ๋ฒ์ ์์ ์ฌ์ฉ ์๋จ
implementation group: 'org.glassfish.web', name: 'jakarta.servlet.jsp.jstl', version: '3.0.0'
Spring Boot๋ ์๋ฒ ๋๋ ์๋ฒ ํ๊ฒฝ์์ JSP๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํ์ง ์์ต๋๋ค.
Spring Boot๋ ์ฃผ๋ก Thymeleaf, FreeMarker์ ๊ฐ์ ๋ค๋ฅธ ํ ํ๋ฆฟ ์์ง์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ฌ์ ํ JSP๋ฅผ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด, ๋ช ๊ฐ์ง ์ถ๊ฐ์ ์ธ ์ค์ ๊ณผ ์์กด์ฑ์ ํ๋ก์ ํธ์ ํฌํจ์์ผ์ผ ํฉ๋๋ค.
์์กด์ฑ ์ค๋ช
- **`org.springframework.boot:spring-boot-starter-web`**: Spring Boot ์น ์ ํ๋ฆฌ์ผ์ด์
๊ฐ๋ฐ์ ์ํ ์คํํฐ ํจํค์ง์
๋๋ค. ์ด๋ Spring MVC์ ํจ๊ป ์๋ฒ ๋๋ Tomcat ์๋ฒ๋ฅผ ํฌํจํ๋ฉฐ, RESTful ์ ํ๋ฆฌ์ผ์ด์
์ ์ฝ๊ฒ ๊ตฌ์ถํ ์ ์๋๋ก ์ง์ํฉ๋๋ค.
- **`org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.3`**: MyBatis๋ฅผ Spring Boot์ ํจ๊ป ์ฌ์ฉํ๊ธฐ ์ํ ์คํํฐ์
๋๋ค. ์ด๋ฅผ ํตํด MyBatis์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋ ์์
์ ์์ฝ๊ฒ ์ค์ ํ๊ณ ์งํํ ์ ์์ต๋๋ค.
- **`org.projectlombok:lombok`**: Java ํ๋ก์ ํธ์์ ๋ณด์ผ๋ฌํ๋ ์ดํธ ์ฝ๋๋ฅผ ์ค์ด๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์
๋๋ค. ์ด๋
ธํ
์ด์
์ ์ฌ์ฉํ์ฌ ์๋์ผ๋ก getter, setter, toString ๋ฑ์ ๋ฉ์๋๋ฅผ ์์ฑํด ์ค๋๋ค.
- **`org.springframework.boot:spring-boot-devtools`**: ๊ฐ๋ฐ ์ค์ ์ ์ฉํ ์ฌ๋ฌ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ Spring Boot์ ์ถ๊ฐ ๋๊ตฌ์
๋๋ค. ์๋ฅผ ๋ค์ด, ์๋ ๋ฆฌ์คํํธ ๊ธฐ๋ฅ์ด ์์ด ํ์ผ ๋ณ๊ฒฝ ์ ์ ํ๋ฆฌ์ผ์ด์
์ ์๋์ผ๋ก ์ฌ์์ํด ์ค๋๋ค.
- **`com.h2database:h2`**: ์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก, ๊ฐ๋ฐ ๋ฐ ํ
์คํธ ๋ชฉ์ ์ผ๋ก ์ฃผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. ์ค์น ์์ด ์ ํ๋ฆฌ์ผ์ด์
๋ด๋ถ์์ ์คํ๋๋ฏ๋ก ํ
์คํธ ํ๊ฒฝ ๊ตฌ์ฑ์ด ์ฉ์ดํฉ๋๋ค.
- **`com.mysql:mysql-connector-j`**: MySQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐํ๊ธฐ ์ํ JDBC ๋๋ผ์ด๋ฒ์
๋๋ค. ์ด๋ฅผ ํตํด Spring Boot ์ ํ๋ฆฌ์ผ์ด์
์ด MySQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํต์ ํ ์ ์์ต๋๋ค.
- **`annotationProcessor 'org.projectlombok:lombok'`**: Lombok ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ปดํ์ผ ์์ ์ ์ด๋
ธํ
์ด์
์ ์ฒ๋ฆฌํ ์ ์๋๋ก ์ง์ํฉ๋๋ค.
- **`org.springframework.boot:spring-boot-starter-test`**: ํ
์คํธ๋ฅผ ์ํ ์คํํฐ ํจํค์ง๋ก, JUnit, Spring Test, Mockito ๋ฑ์ ํฌํจํ์ฌ ์ ํ๋ฆฌ์ผ์ด์
์ ํ
์คํธ๋ฅผ ์ง์ํฉ๋๋ค.
- **`org.mybatis.spring.boot:mybatis-spring-boot-starter-test:3.0.3`**: MyBatis์ ํจ๊ป ์ฌ์ฉํ ์ ์๋ ํ
์คํธ ์ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์
๋๋ค. MyBatis ๊ธฐ๋ฐ์ ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ํ
์คํธํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- **`org.apache.tomcat.embed:tomcat-embed-jasper`**: ์ด ์์กด์ฑ์ ์๋ฒ ๋๋ Tomcat ์๋ฒ์์ JSP ํ์ผ์ ์ปดํ์ผํ๊ธฐ ์ํด ํ์ํฉ๋๋ค. Spring Boot๊ฐ ์ฌ์ฉํ๋ ์๋ฒ ๋๋ ์๋ฒ ํ๊ฒฝ์์ JSP ํ์ผ์ ์ ์์ ์ผ๋ก ์ฒ๋ฆฌํ๊ณ ์คํํ ์ ์๊ฒ ํด ์ค๋๋ค.
- **`org.glassfish.web:jakarta.servlet.jsp.jstl:2.0.0`**: ์ด ์์กด์ฑ์ JSP ํ์ค ํ๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(JSTL)๋ฅผ ํ๋ก์ ํธ์ ์ถ๊ฐํฉ๋๋ค. JSTL์ JSP ํ์ด์ง์์ ๋ฐ๋ณต๋ฌธ, ์กฐ๊ฑด๋ฌธ ๋ฑ์ ๋ก์ง์ ์ฒ๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ ํ๊ทธ๋ค์ ์งํฉ์
๋๋ค. **`org.glassfish.web`** ๊ทธ๋ฃน์์ ์ ๊ณตํ๋ **`jakarta.servlet.jsp.jstl`** ํจํค์ง๋ JSP์์ ์ฌ์ฉํ ์ ์๋ ๋ค์ํ ํ๊ทธ๋ฅผ ์ ๊ณตํ์ฌ, JSP ํ์ด์ง์ ๊ฐ๋ฐ์ ๋์ฑ ํธ๋ฆฌํ๊ฒ ๋ง๋ค์ด์ค๋๋ค.
'Spring boot' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Spring Boot] REST API ๋ (0) | 2024.08.13 |
---|---|
[Spring Boot] Bank App (5) - ์ฝ๋ฉ ์ปจ๋ฒค์ (0) | 2024.08.13 |
[Spring Boot] Bank App (4) - ํจํค์ง ์ค์ (0) | 2024.08.13 |
[Spring Boot] Bank App (3) - ๋์์ธ ์์ ํ์ธ (0) | 2024.08.13 |
[Spring Boot] Bank App (2) - yml ํ์ผ ์ค์ ํ๊ธฐ (0) | 2024.08.13 |