ALOHA CLASS
/
Back-End
/
Spring Boot
Search
Share
Spring Boot
์คํ๋ง ๋ถํธ ๊ธฐ์ด
SpringBoot_TJE
ALOHA-CLASS
ALOHA CLASS - SpringBoot [LIVE] V.1
Spring Boot ๊ธฐ์ด
ํ๋ก์ ํธ ๋์ฐ๋ฏธ
๊ฐ๋ฐํ๊ฒฝ ์ธํ
VSCODE Spring Boot ๊ฐ๋ฐ ํ๊ฒฝ ์ค์น
VSCODE Spring Boot ๊ฐ๋ฐ ํ๊ฒฝ ์ค์น
youtu.be
SpringBoot
VSCODE
์ค์น
Spring Boot ์ค์น
Spring Boot ์ค์น (Eclipse)
youtu.be
SpringBoot
Eclipse
์ค์น
Spring Boot ํ๋ก์ ํธ ์์ฑ (Eclipse)
youtu.be
SpringBoot
Eclipse
Gradle ์ค์น
1.
๋ค์ด๋ก๋
2.
์์ถํด์
Gradle ์ค์น
youtube.com
gradle
์ค์น
Gradle ๋ฐฐํฌ (SpringBoot)
1.
ํฐ๋ฏธ๋ ์คํ
Gradle ๋ฐฐํฌ (SpringBoot)
youtube.com
VSCODE
SpringBoot
gradle
VS CODE & Gradle ๋ฐฐํฌ
VS CODE & Gradle ๋ฐฐํฌ
youtube.com
SpringBoot
VSCODE
gradle
VSCODE Spring Boot ํ๋ก์ ํธ ์์ฑ
โข
Create Spring Initailizer
โข
index.html ๋ฉ์ธ ํ์ด์ง ์์ฑ
โข
ํ๋ก์ ํธ ์คํ
VSCODE Spring Boot ํ๋ก์ ํธ ์์ฑ
์คํ๋ง ๋ถํธ ์ค๋น
Spring Boot
์คํ๋ง ๋ถํธ๋ ์๋ฐ ๊ธฐ๋ฐ์ ์คํ ์์ค ํ๋ ์์ํฌ๋ก, ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ๊ตฌ์ถํ ์ ์๋๋ก ๋์์ค๋๋ค. ์คํ๋ง ํ๋ ์์ํฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉฐ, ๊ฐ๋ฐ์๋ค์ด ์ค์ ์ ์ต์ํํ๊ณ ๊ฐ๋ฐ์ ์ง์คํ ์ ์๋๋ก ์ ๊ณตํฉ๋๋ค.
์คํ๋ง ๋ถํธ๋ ๋ง์ ๊ฐ๋ฐ์์ ๊ธฐ์ ์์ ์น ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ ๋ง์ดํฌ๋ก์๋น์ค ๊ฐ๋ฐ์ ๋๋ฆฌ ์ฌ์ฉ๋๋ฉฐ, ์คํ๋ง ๋ถํธ๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ ํ๋ก์ธ์ค๋ฅผ ๊ฐํธํํ๊ณ ๋น ๋ฅด๊ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค.
Spring Boot
Spring Boot ์ค์น
Eclipse Spring Boot ์ค์น
Spring Boot ์ค์น ๋ฐ ํ๋ก์ ํธ ์์ฑ
Spring Boot ํ๋ก์ ํธ ๊ตฌ์กฐ
Spring Boot ํ๋ก์ ํธ ๊ตฌ์กฐ
Live Reload
โข
ํฌ๋กฌ ์น ์คํ ์ด์์ ๋ผ์ด๋ธ ๋ฆฌ๋ก๋ ๊ธฐ๋ฅ์ ์ ๊ณตํด์ฃผ๋ ํ์ฅ ํ๋ก๊ทธ๋จ์ ์ค์นํด๋ด ๋๋ค.
์๋ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ LiveReload ์น ์คํ ์ด๋ก ์ด๋ํฉ๋๋ค.
Live Reload
Spring Boot 2์์ 3 ์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์
Spring Boot 3.0 Migration Guide
Spring Boot. Contribute to spring-projects/spring-boot development by creating an account on GitHub.
Spring Boot 2.7 โ> 3.x ๋ง์ด๊ทธ๋ ์ด์
์คํ๋ง ๋ถํธ
์์กด์ฑ ์ฃผ์ (DI; Dependency Injection)
์์กด์ฑ ์ฃผ์ (DI)์ ์ํํธ์จ์ด ๊ฐ๋ฐ์์ ์ค์ํ ๊ฐ๋ ์ ๋๋ค. DI๋ ์ปดํฌ๋ํธ ๊ฐ์ ์์กด์ฑ์ ์ธ๋ถ์์ ์ฃผ์ ํจ์ผ๋ก์จ ๋์จํ ๊ฒฐํฉ์ ์ ์งํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์ด๋ฅผ ํตํด ์ฝ๋์ ์ ์ฐ์ฑ๊ณผ ์ฌ์ฌ์ฉ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
์คํ๋ง DI
์คํ๋ง ํ๋ ์์ํฌ์์๋ DI๋ฅผ ์ฝ๊ฒ ๊ตฌํํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์คํ๋ง DI ์ปจํ ์ด๋๊ฐ ๊ฐ์ฒด ๊ฐ์ ์์กด์ฑ์ ๊ด๋ฆฌํ๊ณ ํ์ํ ์์กด ๊ฐ์ฒด๋ฅผ ์ฃผ์ ํด์ค๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ์์กด์ฑ์ ๊ด๋ฆฌํ๋ ๋ถ๋ถ์ ์ง์คํ ํ์ ์์ด ๋น์ฆ๋์ค ๋ก์ง์ ์ง์คํ ์ ์์ต๋๋ค.
์์กด์ฑ ์ฃผ์ (DI)
HTTP
HTTP(Hypertext Transfer Protocol)๋ ์น ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํ ํต์ ํ๋กํ ์ฝ์ ๋๋ค.
HTTP
HTTP X SpringBoot -
RestTemplate
&
WebClient
HTTP ์์ฒญ ๋ฉ์์ง์ ์๋ฐ ์น๊ฐ๋ฐ
โข
HTTP ๋ฉ์์ง์ ํค๋ ์ ๋ณด์๋ ์์ฒญํ๋ ๋ฆฌ์์ค์ ํ์ , ๊ธธ์ด, ์ธ์ฝ๋ฉ ๋ฐฉ์ ๋ฑ์ ์ ๋ณด๊ฐ ํฌํจ๋ ์ ์์ต๋๋ค.
โข
Java
์์๋
HttpURLConnection
ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ HTTP ์์ฒญ์ ๋ณด๋ผ ์ ์์ต๋๋ค. ์์ ์ฝ๋์์๋ GET ์์ฒญ์ ๋ณด๋ด๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค.
HTTP X SpringBoot -
RestTemplate
&
WebClient
Request
: HTTP Request(์์ฒญ)๋ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ๋ก ๋ณด๋ด๋ ์์ฒญ ๋ฉ์์ง๋ก, ์น ๋ฆฌ์์ค์ ๋ํ ๋์(GET, POST, ๋ฑ) ๋ฐ ํด๋น ๋ฆฌ์์ค์ ํจ๊ป ์ ๋ฌ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ํฉ๋๋ค.
Request
Response
: ์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ก ๋ณด๋ด๋ ์๋ต ๋ฉ์์ง๋ก, ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ํ ์ํ ๋ฐ ํด๋น ์์ฒญ๊ณผ ํจ๊ป ์ ๋ฌ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ํฉ๋๋ค.
Response
Thunder Client
๊ฒฝ๋ Rest API ํด๋ผ์ด์ธํธ ์ต์คํ ์ ์ผ๋ก, Visual Studio Code์ฉ์ผ๋ก ์ค๊ณ๋ ๊ฐ๋จํ๊ณ ๊น๋ํ ๋์์ธ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
marketplace.visualstudio.com
Thunder Client
MyBatis
MyBatis ๋ํด์ ์์๋ณด๊ณ ๊ฐ๋จํ๊ฒ ๊ฒ์ํ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ์ค์ต๊น์ง ์งํํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
โข
Mybatis
โข
ํ๋ก์ ํธ ๊ตฌ์กฐ
โข
์คํ๋ง ๋ถํธ์์ MyBatis ์ฌ์ฉ
MyBatis
๊ฒ์ํ
REST (Representational State Transfer)
์ํ ํํ ์ ์ก ์ํคํ ์ฒ
present [prษชหzent]
: ๋ณด์ฌ์ฃผ๋ค
REST
๊ฐ์
โข
MVC ํจํด
โข
MVC vs REST
โข
MVC๋ ์ธ์ ์ฐ์ด๋?
โข
REST๋ ์ธ์ ์ฐ์ด๋?
โข
MVC model1
MVC
Pagination
๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ์ ๋ชจ๋ ๋ณด์ฌ์ฃผ์ง ์๊ณ
์ฌ๋ฌ ํ์ด์ง๋ก ๋๋ ์ ์ถ๋ ฅ
ํ๋ ๊ธฐ์
1.
Page ๊ฐ์ฒด ์ ์
2.
์ฟผ๋ฆฌ ์ ์ฉ
3.
ํ์ด์ง๋ค์ด์
Pagination
Spring Validation
Spring Validation์ ์ฌ์ฉ์ ์ ๋ ฅ ๋ฐ์ดํฐ์ ์ ํจ์ฑ์ ๊ฒ์ฆํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์์ ์๋ชป๋ ๋ฐ์ดํฐ๊ฐ ์ฒ๋ฆฌ๋๋ ๊ฒ์ ๋ฐฉ์งํ๊ณ , ๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๋๋ฐ ๋์์ ์ค๋๋ค.
์ฃผ์ ํน์ง
Spring Validation
Springdoc OpenApi
Spring ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ OpenAPI 3.0 ๋ฌธ์๋ฅผ ์๋ ์์ฑํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
REST API ์ API ๋ฌธ์๋ฅผ ์๋ํ ํด์ฃผ๋ ๋๊ตฌ์ ๋๋ค.
API ๊ฐ๋ฐ ๋ฌธ์ํ ๋๊ตฌ
API ๊ฐ๋ฐ ๋ฌธ์ํ ๋๊ตฌ๋ API ์๋ํฌ์ธํธ, ์์ฒญ, ์๋ต ๋ฐ ๊ด๋ จ ์ ๋ณด๋ฅผ ๋ฌธ์ํํ์ฌ ๊ฐ๋ฐ์๋ค์๊ฒ API ์ฌ์ฉ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ ์ํํธ์จ์ด ๋๊ตฌ์ ๋๋ค.
Springdoc OpenApi
์ฃผ์ ์ด๋ ธํ ์ด์ ์ ๋ฆฌ
โข
์์กด์ฑ ์ด๋ ธํ ์ด์
โฆ
@Component
โฆ
@Autowired
โฆ
@Controller
โฆ
@RestController
โฆ
@Service
โฆ
@Repository
โข
์์ฒญ ๊ฒฝ๋ก ๋งคํ ์ด๋ ธํ ์ด์
โฆ
@Controller or @RestController
โฆ
@RequestMapping
โช
@GetMapping
โช
@PostMapping
โช
@PutMapping
โช
@DeleteMapping
โข
์์ฒญ ํ๋ผ๋ฏธํฐ ์ด๋ ธํ ์ด์
โฆ
@RequestParam
โฆ
@PathVaiable
โฆ
@RequestBody
โฆ
@ModelAttribute
์ฃผ์ ์ด๋ ธํ ์ด์ ์ ๋ฆฌ
์ค์ต ํ๋ก์ ํธ
๊ฒ์ํ ํ๋ก์ ํธ
โข
ํ๋ก์ ํธ
โฆ
build.gradle
โฆ
application.properties
โฆ
๋ก๊ทธ
โช
โช
โข
๋ฐ์ดํฐ๋ฒ ์ด์ค
โฆ
board.sql
โข
์์ค์ฝ๋
โฆ
๋ก์ง
โช
Board.java
โช
BoardMapper.xml
โช
BoardMapper.java
โช
BoardService.java
โช
BoardServiceImpl.java
โช
BoardController.java
โช
HomeController.java
โฆ
ํ๋ฉด
โช
index.html
โช
board
โข
list.html
โข
create.html
โข
detail.html
โข
update.html
๊ฒ์ํ ํ๋ก์ ํธ
โข
๋ฐ์ดํฐ๋ฒ ์ด์ค
โฆ
file.sql
โข
์์ค์ฝ๋
โฆ
๋ก์ง
โช
Board.java
โช
Files.java
โช
FileMapper.xml
โช
FileMapper.java
โช
FileService.java
โช
FileServiceImpl.java
โช
FileController.java
โฆ
ํ๋ฉด
โช
index.html
โช
board
โข
list.html
โข
create.html
โข
detail.html
โข
update.html
ํ์ผ ์ ๋ก๋
ํ์ผ ๋ชฉ๋ก ์ธ๋ค์ผ
โข
MyBatis resultMap ๊ธฐ๋ฅ์ผ๋ก 1:N ๋งคํ
โฆ
collection
โฆ
board ํ ์ด๋ธ : file ํ ์ด๋ธ = 1 : N
ํ์ผ ๋ชฉ๋ก ์ธ๋ค์ผ
์คํ๋ง ๋ถํธ 3 ์ด์
์ด๋ฆ
ํ๊ทธ
ํ ์คํธ
@PathVariable,
ย
@RequestParam ํ๋ผ๋ฏธํฐ ์๋ ๋งคํ
Open
v3.2~
์คํ๋ง ๋ถํธ 3.2 ๋ฒ์ ์ดํ ๋ถํฐ๋, ํด๋น ์ด๋ ธํ ์ด์ ์์ ํ๋ผ๋ฏธํฐ ์ด๋ฆ์ ์๋ ๋งคํํ์ง ์๋๋ค. ํ๋ผ๋ฏธํฐ ๋ช ์ ๋ฐ๋์ ๋ช ์ํด์ฃผ์ด์ผํ๋ค.
Open