์ ์ฒด ๊ธ199 [ํด๋ฆฐ์ฝ๋] ์ฑ ๊ตฌ๋งค ์ธ์ฆ 2022. 2. 18. [Spring Boot/RESTful] User Service API ๊ตฌํ 1) domain ํด๋์ค ์์ฑ ๋๋ฉ์ธ ํน์ ์ ๋ฌธ ๋ถ์ผ์์ ์ฌ์ฉ๋๋ ์ ๋ฌธ ์ง์ ์คํ ๋ ์คํ์ ํด๋น ํด๋์ค๊ฐ ์ด๋ ์ฉ๋๋ก ์ฌ์ฉ๋ ๊ฒ์ธ์ง ๋ํ๋ด๋ ๊ฒ → ์์กด์ฑ ์ฃผ์ ํ ๋ ๋์์ด ๋๋ค. ex) @RestController, @Service User domain ์ฌ๊ธฐ์์๋ @Data annotation์ ์ฌ์ฉํ์ง๋ง @Data ์ฌ์ฉ์ ๋๋๋ก ์์ ํ๊ณ @Getter @Setter ๋ฑ์ ๋ฐ๋ก ์ง์ ํด์ฃผ๋ ๊ฒ์ด ์ข๋ค. (@Data ๊ฐ์ ๊ฒฝ์ฐ๋ ํ๊บผ๋ฒ์ ๋ง์ ๊ธฐ๋ฅ์ ๋ถ๋ฌ์ค๊ธฐ๋ ํ๊ณ , @ToString์ ์๋ชป ์ฐ๋ฉด JPA์์ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์๊ธฐ ๋๋ฌธ) @Data @AllArgsConstructor public class User { private Integer id; private String name; private Da.. 2022. 2. 17. [Spring Boot/RESTful] Spring Boot๋ก ๊ฐ๋ฐํ๋ RESTful Service ํ๋ก์ ํธ ์์ฑ ์ง๊ธ๊น์ง๋ ํญ์ start.spring.io๋ฅผ ์ด์ฉํด์๋๋ฐ, IntelliJ ์์์ ๋ฐ๋ก ํ๋ก์ ํธ๋ฅผ ์์ฑํ ์๋ ์๋ค! ์๋์ฒ๋ผ dependency๋ฅผ ์ถ๊ฐํ๋ฉด pom.xml์ ์๋์ผ๋ก ์ถ๊ฐ๋๋ค. Spring web → embedded tomcat ์คํ ๊ฐ๋ฅ REST API ์ค๊ณ HTTPS API Name GET /users retrieve all users POST /users create a user GET /users/{id} retrieve one user DELETE /users/{id} delete a user GET /users/{id}/posts retrieve all posts for a user POST /users/{id}/posts create a post for a u.. 2022. 2. 17. [Spring Boot/RESTful] Web Service & Web Application ์น ์๋น์ค ๋คํธ์ํฌ ์์์ ์๋ก ๋ค๋ฅธ ์ข ๋ฅ์ ์ปดํจํฐ๋ค ๊ฐ์ ์ํธ์์ฉํ๊ธฐ ์ํ ์ํํธ์จ์ด ์์คํ SOAP VS REST 1) SOAP(Simple object access protocol) XML ๊ธฐ๋ฐ envelope - header - body๋ก ๊ตฌ์ฑ๋์ด ์์ -> overhead ์ฌํจ 2) REST(REpresentational State Transfer) Resource์ representation์ ์ํ (์์์) ์ํ ์ ๋ฌ HTTP Method๋ฅผ ํตํด Resource๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ์ํคํ ์ณ RESTful : REST API๋ฅผ ์ ๊ณตํ๋ ์น ์๋น์ค REST HTTP HTTP Methods : ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ ์ ๋ฌํ๊ฒ ๋๋ ๋ชฉ์ ์ด๋ ์ข ๋ฅ๋ฅผ ์๋ ค์ฃผ๋ ์๋จ HTTP Status Codes : ํด๋ผ์ด.. 2022. 2. 17. [Error] Spring Boot(2.5x)์์ data.sql ์คํ ์ค๋ฅ(H2 database) ์ํฉ Spring Boot(2.5 ์ด์)์์ data.sql์ ์คํํ์์ผ๋ h2 db์ ํด๋น ์ฟผ๋ฆฌ๊ฐ ๋ฐ์๋์ง ์์ ๊ฒฝ์ฐ.(ํ ์ด๋ธ์ ์ ์์ ์ผ๋ก ์์ฑ๋จ) ํด๊ฒฐ application.yml์ ์๋ ๋ ์ค ์ถ๊ฐํ๊ธฐ. ๋ค๋ฅธ ํฌ์คํ ์ ๋ณด๋ฉด defer-datasource-initialization์ true๋ก๋ง ํด๋ ๋์๊ฐ๋ค๊ณ ํ๋๋ฐ, ๋๊ฐ์ ๊ฒฝ์ฐ sql.init.mode=always๋ฅผ ์ถ๊ฐ์ ์ผ๋ก ๋ฃ์ด์ผ ์ ์์ ์ผ๋ก ์๋ํ๋ค! sql: init: mode: always jpa: defer-datasource-initialization: true 2022. 2. 2. [Error] H2 ์ถ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฑ - IO Exception: null [90028-200] ์ํฉ H2 Database Engine์ ํตํด ์๋ก์ด H2 ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ง๋๋ ค๊ณ ํ์ ๋ ๋ฐ์ํ๋ ์ค๋ฅ. path, username, password๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๋ฃ์๋๋ฐ๋ ๋ถ๊ตฌํ๊ณ ๋ฐ์. ํด๊ฒฐ ./{dbname}์ ~/{dbname}์ผ๋ก ๋ฐ๊พธ์ด์ฃผ์๋๋ ๋ฐ๋ก ์์ฑ๋์๋ค. ๊ทธ๋ฌ๋ ์๋๋ผ๋ฉด ~/{dbname}๊ณผ ./{dbname} ๋ชจ๋ ์์ฑ์ด ์ ๋์ด์ผ ํ๋ ๊ฒ์ด ๋ง๋ค. ์ฐจ์ด ~/ : user ํด๋์ ์์ฑ ./ : h2 bin ํด๋์ ์์ฑ ๋น๋ฐ๋ฒํธ ์์ ํ๋ ๋ฒ ALTER USER {์ ์ ๋ช } SET PASSWORD '(๋ณ๊ฒฝ๊ฐ)'; 2022. 1. 30. [Error] GenerationType.IDENTITY - ERROR: NULL not allowed for column "ID"; SQL statement: ์ํฉ ํ ์ด๋ธ ์์ฑ๊ณผ Insert ์ฟผ๋ฆฌ๋ ์ ์๋ํ๋ ์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ณด๋ฉด ๊ฐ์ด ์๋ ํ์ ํด๊ฒฐ h2 ์ต์ ๋ฒ์ ์ ์ฌ์ฉํ๊ณ ์์ด์ ๋ฐ์ํ๋ ๋ฌธ์ ๋ผ๊ณ ํ๋ค. 1.4.200 ๋ฒ์ ์ ๋ค์ด๋ฐ์ผ๋ฉด ๋๋ค. ๊ธฐํ ์ค๋ฅ +a) 1.4.200 installer๋ฅผ ๋ค์ด๋ฐ์๋๋ฐ๋ ํด๊ฒฐ๋์ง ์๋ ๊ฒฝ์ฐ -> ์ฌ์ ํ ์ต์ ๋ฒ์ ์ผ๋ก ๋์ด ์์ ํ๋ฅ ์ด ๋๋ค 1) ํ์ฌ ๋ฒ์ ํ์ธ SELECT H2VERSION() FROM DUAL 2) C:\Users\{username}์์ .h2.server.properties์ test.mv.db ์ญ์ 3) C:\Program Files (x86)\h2\bin์์ zipํ์ผ ๋ฒ์ ํ์ธ ํ ํด๋น ํด๋ ์ญ์ -> ํํ์ด์ง์์ installer ์ฌ์ค์น => h2๋ฅผ ์ญ์ ํ ๋ (3)๋ฒ ์์น์ ์๋ ํ์ผ.. 2022. 1. 30. [Chap 6] ๋ทฐ๋ฅผ ์ด์ฉํ ํ๋ฉด ๊ตฌ์ฑ ํ๋ฉด์ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ ํ๋ฉด์ ์ถ๋ ฅํ๋ ์ปดํฌ๋ํธ : ์กํฐ๋นํฐ ํ๋ฉด์ ๋ด์ฉ์ ํ์ํ๋ ํด๋์ค : ๋ทฐ ํด๋์ค(TextView, ImageView ๋ฑ) -> ์กํฐ๋นํฐ๊ฐ ์คํ๋๋ฉด์ ๋ทฐ ํด๋์ค๋ฅผ ์ด์ฉํด ํ๋ฉด์ ๊ตฌ์ฑํ๊ณ ์ด๋ฅผ ๊ธฐ๊ธฐ์ ํ๋ฉด์ ์ถ๋ ฅํ๋ ๊ตฌ์กฐ 1) ์กํฐ๋นํฐ ์ฝ๋๋ก ์์ฑ ํ๋ฉด์ ๊ตฌ์ฑํ๋ ๋ทฐ ํด๋์ค๋ฅผ ์กํฐ๋นํฐ ์ฝ๋์์ ์ง์ ์์ฑ -> XML ํ์ผ์ ์ฌ์ฉํ์ง ์์ผ๋ฏ๋ก ์์ฑ X 2) ๋ ์ด์์ XML ํ์ผ๋ก ์์ฑ ํ๋ฉด์ ๊ตฌ์ฑํ๋๋ฐ ํ์ํ ๋ทฐ๋ฅผ XML์ ํ๊ทธ๋ก ๋ช ์ํด ํ๋ฉด์ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ XML์์ ํ๋ฉด์ ๊ตฌํํ๋ฏ๋ก ์กํฐ๋นํฐ ์ฝ๋์์๋ ํ๋ฉด์ ์ถ๋ ฅํ๋ setContentView() ํจ์๋ง ํธ์ถํ๋ฉด์ XML ํ์ผ์ ์ ๋ฌํ๋ฉด ๋๋ค. class MainActivity: AppCompatActivity() { overrid.. 2021. 11. 30. [Chap 5] ์ฝํ๋ฆฐ์ ์ ์ฉํ ๊ธฐ๋ฒ ๋๋ค ํจ์์ ๊ณ ์ฐจ ํจ์ ๋๋ค ํจ์(๋๋ค์) - ์ต๋ช ํจ์(anonymous funciton) ์ ์ ๊ธฐ๋ฒ - ์ฃผ๋ก ํจ์๋ฅผ ๊ฐ๋จํ๊ฒ ์ ์ํ ๋ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๊ณ ์ฐจ ํจ์์ ๋ง์ด ์ฌ์ฉ * ๊ณ ์ฐจํจ์ : ํจ์๋ฅผ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌ๋ฐ๊ฑฐ๋ ๋ฐํํ๋ ํจ์ ๋๋ค ํจ์ ์ ์ธ๊ณผ ํธ์ถ fun ํค์๋๋ฅผ ์ด์ฉํ์ง ์์ผ๋ฉฐ ํจ์ ์ด๋ฆ์ด ์์. -> ์ฃผ๋ก ๋๋ค ํจ์๋ฅผ ๋ณ์์ ๋์ ํด ์ฌ์ฉ { ๋งค๊ฐ๋ณ์ -> ํจ์ ๋ณธ๋ฌธ } * ๋๋ค ํจ์ ์ฌ์ฉ ๊ท์น - ์ค๊ดํธ { } ๋ก ํํ - { } ์์ ํ์ดํ(->)๊ฐ ์์ผ๋ฉฐ ํ์ดํ ์ผ์ชฝ์ ๋งค๊ฐ๋ณ์, ์ค๋ฅธ์ชฝ์ ํจ์ ๋ณธ๋ฌธ - ํจ์์ ๋ฐํ๊ฐ์ ํจ์ ๋ณธ๋ฌธ์ ๋ง์ง๋ง ํํ์ // ๋๋ค ํจ์๋ฅผ ๋ณ์์ ๋์ val sum = {no1: Int, no2: Int -> no1 + no2} sum(10, 20) // ๋๋ค .. 2021. 11. 23. ์ด์ 1 ยทยทยท 8 9 10 11 12 13 14 ยทยทยท 23 ๋ค์