Springboot/lecture

[springboot] ๊ธฐ๋ณธ์ ์ธ ๊ฐœ๋…์ •๋ฆฌ

Alchemists 2022. 8. 5. 09:20
728x90

๐ŸŽ€ ํด๋” ๊ตฌ์กฐ

src๋Š” ๋„๋ฉ”์ธ ๋ณ„๋กœ ํŒจํ‚ค์ง€๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค. ํšŒ์›,๊ฒŒ์‹œ๊ธ€,๋Œ“๊ธ€,์ฃผ๋ฌธ๋“ฑ ์š”๊ตฌ์‚ฌํ•ญ ํ˜น์€ ๋ฌธ์ œ์˜์—ญ์„ ๋„๋ฉ”์ธ์ด๋ผ๊ณ  ํ•œ๋‹ค.

config์™€ util ์€ src์—์„œ ํ•„์š”ํ•œ ๋ถ€์ฐจ์ ์ธ ํŒŒ์ผ์„ ๋ชจ์•„๋†“์€ ํด๋”์ด๋‹ค. ์ž๋ฐ”์ฝ”๋“œ๋กœ ์Šคํ”„๋ง ๋นˆ์„ ์ง์ ‘ ๋งŒ๋“ค๋•Œ config ํด๋”์—์„œ ์ž‘์—…ํ•˜๋ฉด ์ข‹๋‹ค. 

๋ฉ”์ธ ์ฝ”๋“œ๋Š” src์— ๋‹ด๊ฒจ์žˆ๋‹ค! ์‹ค์ œ api๊ฐ€ ๋™์ž‘ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋“ค์„ ๋‹ด๋Š”๋‹ค.

config๋Š” src์—์„œ ํ•„์š”ํ•œ SecretKey(git์— ๋“ค์–ด๊ฐ€๋ฉด ์•ˆ๋˜๋Š”),์ƒ์ˆ˜ ํด๋ž˜์Šค

util์—๋Š” JWT ์•”ํ˜ธํ™”,์ •๊ทœํ‘œํ˜„์‹๋“ค์„ ๋‹ด๋Š”๋‹ค. 

 

๐ŸŽ€ Request์—์„œ Response๊นŒ์ง€์˜ ๊ณผ์ • (API ํ†ต์‹  ํ”„๋กœ์„ธ์Šค)

Request -> Route -> Controller -> Service/Provider -> Dao ->DB

DB-> Dao ->Service/Provider -> Controllere -> Route->Response

 

โญ Controller

API ํ†ต์‹ ์˜ Routring์ฒ˜๋ฆฌ (๋ฐ์ดํ„ฐ๋ฅผ ๋ชฉ์ ์ง€๊นŒ์ง€ ์ „๋‹ฌ)

Request๋ฅผ ๋‹ค๋ฅธ ๊ณ„์ธต์— ๋„˜๊ธฐ๊ณ  ์ฒ˜๋ฆฌ๋œ ๊ฐ’ Response

 

โญ Service์™€ Provider

๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋‹ค๋ฃจ๋Š” ๊ณณ CRUD ์ค‘ R์— ํ•ด๋‹นํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ๊ธธ๊ธฐ์— R์— ํ•ด๋‹นํ•˜๋Š” ๊ฒƒ์€ Provider

CUD๋Š” Service์—์„œ ํ–‰ํ•จ

 

โญDao

 

Strinfg ~~ Query -> Object ~~[]Params ->jdbc Template ํ•จ์ˆ˜๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

Query๋ถ€๋ถ„์€ DB์— SQL์š”์ฒญ์„ ํ•  ์ฟผ๋ฆฌ๋ฌธ ์˜๋ฏธํ•˜๋Š”๋ฐ, ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๋™์  ์ฟผ๋ฆฌ

Query์˜ ๋™์  ์ฟผ๋ฆฌ์— ์ž…๋ ฅ๋˜์–ด์•ผ ํ•  ๊ฐ’๋“ค์ด ํ•„์š”ํ•œ๋ฐ ๊ทธ๊ฒƒ์ด Params ๋ถ€๋ถ„.

Params๋ถ€๋ถ„์€ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์—์„œ ์ œ๊ณตํ•˜๋Š” ์ •๋ณด (~Req.java ์— ์žˆ๋Š” ์ •๋ณด)๋กœ ๋ถ€ํ„ฐ getXXX๋ฅผ ํ†ตํ•ด ๊ฐ’์„ ๊ฐ€์ ธ์˜จ๋‹ค. 

์˜ˆ๋ฅผ ๋“ค๋ฉด getEmail -> email ๊ฐ’์„ ๊ฐ€์ ธ์˜ด 

GET,POST,PATCH ๋ฉ”์„œ๋“œ์— ๋”ฐ๋ผ jdbcTemplate์˜ ์ ์ ˆํ•œ ํ•จ์ˆ˜ (queryForObject,query,update)๋ฅผ ์‹คํ–‰์‹œํ‚จ๋‹ค.  ์ฆ‰, DB์š”์ฒญ์ด ์ผ์–ด๋‚œ๋‹ค. 

POST,PATCH์˜ ๊ฒฝ์šฐ jdbcTemplate.update

GET์€ ๋Œ€์ƒ์ด ํ•˜๋‚˜์ผ ๊ฒฝ์šฐ jdbcTemplate.queryForObject , ๋Œ€์ƒ์ด ๋ณต์ˆ˜์ผ ๊ฒฝ์šฐ jdbcTemplate.query

jdbcTemplate์ด ์‹คํ–‰์‹œํ‚ฌ๋•Œ Query๋ถ€๋ถ„๊ณผ Params๋ถ€๋ถ„์€ ๋Œ€์‘(๊ฐ’์„ ์ฃผ์ž…)์‹œ์ผœ์„œ DB์— ์š”์ฒญํ•œ๋‹ค.

 

๋™์ ์ฟผ๋ฆฌ๋ฌธ ์‹คํ–‰(Query) -> ์ฃผ์ž…๋  ๊ฐ’ ์„ค์ •(Params) ->  jdbcTemplate ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด Query์™€ Param ๋Œ€์‘์‹œ์ผœ DB์— ์š”์ฒญ 

 

 

๐ŸŽ€ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €

Maven(์Šคํ”„๋ง ์„ ํ˜ธ) Gradle(์Šคํ”„๋ง๋ถ€ํŠธ ์„ ํ˜ธ)

 

๐ŸŽ€ Validation

: ์„œ๋ฒ„ API๊ตฌ์„ฑ์˜ ๊ธฐ๋ณธ์€ Validation์„ ์ž˜ ์ฒ˜๋ฆฌํ•ด์•ผํ•œ๋‹ค. 

ํ˜•์‹์  Validation์€ Controller์—์„œ 

DB์—์„œ ๊ฒ€์ฆํ•ด์•ผํ•˜๋Š” ์˜๋ฏธ์  Validation์€ Provider๋‚˜ Service์—์„œ ์ฒ˜๋ฆฌํ•˜๋ฉด ๋œ๋‹ค. 

 

 

 

๐ŸŽ€  Lombok

 

์ž๋ฐ” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋ฐ˜๋ณต๋˜๋Š” getter,settet,toString ๋“ฑ์˜ ๋ฉ”์„œ๋“œ ์ž‘์„ฑ์ฝ”๋“œ ์ค„์—ฌ์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

 

๐ŸŽ€ ๋ฉ”์†Œ๋“œ ์ด๋ฆ„ ์ง“๋Š” ๋ฐฉ๋ฒ•

 

HTTP Method + ํ•ต์‹ฌ URI

 

GET/users ๋ผ๋ฉด getUsers

PATCH/users๋ผ๋ฉด pathUsers

 

์—ฌ๊ธฐ์— Res/Req๊ฐ€ ์ถ”๊ฐ€๋œ๋‹ค๋ฉด

HTTP Method+ํ•ต์‹ฌURI+Res/Req

 

PATCH /users/:usersId  -> PatchUsersRes  / Patch/Users/Req

 

CRUD๋กœ ์ง“๋Š”๋‹ค๋ฉด

 

C -> createInfo

R -> retrieveInfoList

U -> updateInfo

D -> deleteInfo

 

๐ŸŽ€ ์Šคํ”„๋ง์„œ๋ฒ„ ์‹คํ–‰์‹œ

cd ํ˜„์žฌ ์ž‘์—…ํ•˜๋Š” ํ”„๋กœ์ ํŠธ ๋ช…์œผ๋กœ ๊ฐ€์„œ

 

./gradlew clean build
java -jar build/libs/demo-0.0.1-SNAPSHOT.jar

 

๋ฐ˜๋Œ€๋กœ ์Šคํ”„๋ง ์„œ๋ฒ„ ๋„๊ณ  ์‹ถ์„ ๋•Œ pause๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋˜์ง€๋ฉด Web server failed to start Port XXXX was already in use ์—๋Ÿฌ๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋œ๋‹ค๋ฉด

 

cmd์ฐฝ์„ ์—ด์–ด์„œ

netstat -ano

TCP ํ”„๋กœํ† ์ฝœ ์ค‘์—์„œ ๋‚ด๊ฐ€ ์—ด์€ port๋ฒˆํ˜ธ ์˜†์— pid๋„˜๋ฒ„ ํ™•์ธ

 

๋‚˜๋Š” 9000๋ฒˆ ํฌํŠธ๋ฅผ ์—ด์—ˆ๊ณ  14888์ด pid ๋„˜๋ฒ„

 

taskkill /pid 14888 /f

 

https://dundung.tistory.com/148

 

Web server failed to start. Port 8080 was already in use ์—๋Ÿฌ

ํฌํŠธ๊ฐ€ ์ด๋ฏธ ์‹คํ–‰ ์ค‘์ผ ๋•Œ ์Šคํ”„๋ง์„ Run ํ•˜๋ฉด ์‹คํ–‰๋˜๋Š” ์—๋Ÿฌ์ด๋‹ค. Web server failed to start. Port 3000 was already in use. Action: Identify and stop the process that's listening on po..

dundung.tistory.com

 

 

๐Ÿ’œ ์ด์™ธ์—๋„ 

 

- ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ• ๊ฒƒ ๊ฐ™์€ ์ฝ”๋“œ๋ฉด try์— ๋„ฃ๊ธฐ

https://coding-factory.tistory.com/280

 

[Java] ์ž๋ฐ” ์˜ˆ์™ธ์ฒ˜๋ฆฌ Try Catch๋ฌธ ์‚ฌ์šฉ๋ฒ•

 Error(์—๋Ÿฌ)์™€ Exception(์˜ˆ์™ธ์˜ ์ฐจ์ด) ์—๋Ÿฌ(Error)๋ž€ ์ปดํ“จํ„ฐ ํ•˜๋“œ์›จ์–ด์˜ ์˜ค๋™์ž‘ ๋˜๋Š” ๊ณ ์žฅ์œผ๋กœ ์ธํ•ด ์‘์šฉํ”„๋กœ๊ทธ๋žจ์— ์ด์ƒ์ด ์ƒ๊ฒผ๊ฑฐ๋‚˜ JVM ์‹คํ–‰์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ์„ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•˜๋Š”๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ

coding-factory.tistory.com

- SQL ํ…Œ์ด๋ธ”์—์„œ status ์ปฌ๋Ÿผ์€ A(active : ํ™œ์„ฑ์ƒํƒœ) , D(delete:์‚ญ์ œ), B(๋ธ”๋ž™์œ ์ €)๋กœ ๊ด€๋ฆฌํ• ๊ฒƒ 

 

 

 

728x90