Banner

My Tech Blog (ํ”„๋กœ๊ทธ๋ž˜๋ฐ์–ธ์–ด)

์˜ค๋Š˜์˜ ๋ช…์–ธ
" ๋ฐ˜๋“œ์‹œ ์ด๊ฒจ์•ผ ํ•˜๋Š” ๊ฑด ์•„๋‹ˆ์ง€๋งŒ ์ง„์‹คํ•  ํ•„์š”๋Š” ์žˆ๋‹ค. ๋ฐ˜๋“œ์‹œ ์„ฑ๊ณตํ•ด์•ผ ํ•˜๋Š” ๊ฑด ์•„๋‹ˆ์ง€๋งŒ, ์†Œ์‹ ์„ ๊ฐ€์ง€๊ณ  ์‚ด์•„์•ผ ํ•  ํ•„์š”๋Š” ์žˆ๋‹ค. "
- ์—์ด๋ธŒ๋Ÿฌํ–„ ๋ง์ปจ (๋ฏธ๊ตญ 16๋Œ€ ๋Œ€ํ†ต๋ น)
์ž๋ฐ”๊ฐ€ ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ (JVM) ์œ„์—์„œ ์‹คํ–‰๋œ๋‹ค๋Š” ๊ฒƒ์€ ์ตํžˆ ์•Œ๋ ค์ง„ ์‚ฌ์‹ค์ด๋‹ค. ์ดํด๋ฆฝ์Šค๋ฅผ ๋‹ค์šด๋กœ๋“œํ•  ๋•Œ๋Š” ์ดํด๋ฆฝ์Šค ๋ฒ„์ „์— ํ˜ธํ™˜๋˜๋Š” JDK๋„ ํ•จ๊ป˜ ์„ค์น˜ํ•œ๋‹ค.๋˜ํ•œ, ์ดํด๋ฆฝ์Šค ์„ค์ •์—์„œ [Installed JREs]์—์„œ JRE๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด์„œ, ๊ธฐ์กด์— ๋‘๋ฃจ๋ญ‰์ˆ ํ•˜๊ฒŒ ์•Œ๊ณ  ์žˆ๋˜ JDK์™€ JRE์˜ ์ฐจ์ด๊ฐ€ ๊ถ๊ธˆํ•ด์กŒ๋‹ค.๊ทธ๋ž˜์„œ ์˜ค๋Š˜์€ ๊ฐœ๋…์„ ๋ช…ํ™•ํžˆ ์ •๋ฆฌํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค.  1. JDK vs JRE vs JVM ์ฐจ์ด์ง„์งœ ๊ฐ„๋‹จํžˆ ์š”์•ฝํ•˜๋ฉด  ์ž๋ฐ”๋กœ ๊ฐœ๋ฐœํ•  ๋•Œ โ†’ JDK ํ•„์š” (์ปดํŒŒ์ผ๋Ÿฌ ํฌํ•จ)๊ทธ๋ƒฅ ์‹คํ–‰๋งŒ ํ•  ๋•Œ โ†’ JRE๋งŒ ์žˆ์–ด๋„ ๋จ์‹ค์ œ ์‹คํ–‰ ๋‹ด๋‹น โ†’ JVM ์œ„์—์„œ ๋Œ์•„๊ฐ...  JRE๋Š” ์‹คํ–‰์šฉ, JDK๋Š” ๊ฐœ๋ฐœ์šฉ์ด๋ผ๊ณ  ์ดํ•ดํ•˜๋ฉด ์‰ฝ๋‹ค. โ–  JDK (Java Development Kit)`.java` ํŒŒ์ผ์„ `.class(๋ฐ”์ดํŠธ์ฝ”๋“œ)`๋กœ ..
Swagger(Springdoc OpenAPI)์—์„œ ๋ถˆํ•„์š”ํ•œ ์ปฌ๋Ÿผ์ด ๋ณด์ด๋Š” ์ด์œ ๋Š”API ์‘๋‹ต์— DTO๋ฅผ ์จ์•ผ ํ•˜๋Š”๋ฐ Entity๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. โŒ ๋ฌธ์ œ@GetMapping("/users/{id}")public UserEntity getUser(@PathVariable Long id) { return userService.getUser(id);}UserEntity๋ฅผ ์ง์ ‘ ๋ฐ˜ํ™˜ํ•˜๋ฏ€๋กœ, Swagger์—์„œ ๋ชจ๋“  ํ•„๋“œ(password, phoneNumber ๋“ฑ)๊ฐ€ API ๋ฌธ์„œ์— ํฌํ•จ๋œ๋‹ค. โœ… ํ•ด๊ฒฐ๋ฒ•โ†’ Swagger์—์„œ ๋ถˆํ•„์š”ํ•œ ์ปฌ๋Ÿผ์ด ๋ณด์ด๋ฉด, Entity ๋Œ€์‹  DTO๋ฅผ ์‚ฌ์šฉํ•˜์ž@GetMapping("/users/{id}")public UserDto getUser(@PathVariable Lon..
1. DAO (Data Access Object)DAO๋Š” DB์™€ ์ง์ ‘ ํ†ต์‹ ์„ ํ•˜๋ฉด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ , ๊ฐ€์ ธ์˜ค๋Š” ๊ฐ์ฒด์ด๋‹ค.์‚ฌ์šฉ์ฒ˜ : `MyBatis` ํ˜น์€ `JPA`์™€ ๊ฐ™์€ ORM์—์„œ ์‹ค์ œ๋กœ DB ์ ‘๊ทผ์„ ๋‹ด๋‹นํ•˜๋Š” ๊ฐ์ฒดํŠน์ง•: ๋ณดํ†ต ์ธํ„ฐํŽ˜์ด์Šค + Mapper (XML or ์–ด๋…ธํ…Œ์ด์…˜ ๋ฐฉ์‹)์œผ๋กœ ๊ตฌ์„ฑ๋จ ์˜ˆ์ œ (MyBatis)import org.apache.ibatis.annotations.Mapper;import org.apache.ibatis.annotations.Insert;import org.apache.ibatis.annotations.Select;import org.apache.ibatis.annotations.Param;@Mapperpublic interface UserDAO { // ..
Spring ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์„œ๋น„์Šค ๋ ˆ์ด์–ด์—์„œ ์ธํ„ฐํŽ˜์ด์Šค(*Mgr.java)์™€ ๊ตฌํ˜„ ํด๋ž˜์Šค(*MgrImpl.java)๊ฐ€ ๋ถ„๋ฆฌ๋˜์–ด ์žˆ์–ด, F3(Open Declaration)๋ฅผ ๋ˆŒ๋Ÿฌ๋„ ์ธํ„ฐํŽ˜์ด์Šค๋กœ๋งŒ ์ด๋™ํ•˜๋Š” ๋ถˆํŽธํ•จ์ด ์žˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Open Implementation ๊ธฐ๋Šฅ์„ ํ‚ค๋ณด๋“œ ๋‹จ์ถ•ํ‚ค(Ctrl + F3)๋กœ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌ ํ•ด ๋ณธ๋‹ค. ๐Ÿ”น ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•: Open Implementation ๋‹จ์ถ•ํ‚ค ์„ค์ •ํ•˜๊ธฐ 1. Eclipse ํ™˜๊ฒฝ์„ค์ • Window โ†’ Preferences (๋˜๋Š” Alt + W, P)2. ์ขŒ์ธก ๋ฉ”๋‰ด์—์„œ General โ†’ Keys ์„ ํƒ3. "Open Implementation" ๋‹จ์ถ•ํ‚ค ์ง€์ • type filter text์— Open Implementation ์ž…๋ ฅ Binding(๋‹จ์ถ•..
1. ์ž๋ฐ”์˜ ์ฃผ์„์ดˆ๋ณด ๊ฐœ๋ฐœ์ž๋“ค์€ // ํ•œ ์ค„ ์ฃผ์„์„ ๋‚จ๋ฐœํ•˜๋ฉฐ ํ•œ ์ค„ ํ•œ ์ค„์”ฉ ์ฃผ์„์„ ๋‹ค๋Š” ์Šต๊ด€์„ ๊ฐ€์ง„๋‹ค. ๋‚˜ ์—ญ์‹œ ์ฒ˜์Œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋ฐฐ์šธ ๋•Œ ๊ทธ๋Ÿฌํ–ˆ๋‹ค. ์กฐ๊ธˆ ์ฝ”๋”ฉ์„ ํ•ด ๋ณธ ์‚ฌ๋žŒ๋“ค์€ /* ... */์„ ์‚ฌ์šฉํ•ด ์—ฌ๋Ÿฌ ์ค„์„ ํ•œ๊บผ๋ฒˆ์— ์ฃผ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ง„์งœ ๊ณ ์ˆ˜๋“ค์€ /** ... */ Javadoc ์ฃผ์„์„ ํ™œ์šฉํ•œ๋‹ค. ์ด ์ฃผ์„์€ ํ•จ์ˆ˜, ํด๋ž˜์Šค, ๋ฉ”์„œ๋“œ ๋“ฑ์˜ ์„ค๋ช…์„ ํฌํ•จํ•˜์—ฌ ์ž๋™์œผ๋กœ ๋ฌธ์„œ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค. ์˜ค๋Š˜์€ ์ด ์„ธ ๊ฐ€์ง€ ์ฃผ์„์˜ ์ฐจ์ด์ ๊ณผ ํ•จ๊ป˜, ์ž๋ฐ”์—์„œ ์ฃผ์„์„ ๋น ๋ฅด๊ฒŒ ๋‹ค๋ฃจ๋Š” ๋‹จ์ถ•ํ‚ค๋ฅผ ์•Œ์•„๋ณด๊ฒ ๋‹ค. 2. ๋‹จ์ถ•ํ‚ค์ž๋ฐ”์—์„œ ์ฃผ์„์„ ๋น ๋ฅด๊ฒŒ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•˜๋Š” ๋‹จ์ถ•ํ‚ค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 2-1. ํ•œ ์ค„ ์ฃผ์„ (//) ๋‹จ์ถ•ํ‚คCtrl + / (Cmd + / on macOS)์—ฌ๋Ÿฌ ์ค„์„ ์„ ํƒํ•œ ํ›„ Ctrl + /๋ฅผ ..
โš ๏ธ ๋ฌธ์ œ์Šคํฌ๋กค์„ ๋‚ด๋ฆด ๋•Œ ํ—ค๋”๊ฐ€ ํ™”๋ฉด ์œ„์ชฝ์— ๋‚˜ํƒ€๋‚˜๋„๋ก css์— position: fixed; ์†์„ฑ์„ ์ฃผ์—ˆ๋Š”๋ฐ ๋ณธ๋ฌธ ์ปจํ…์ธ ๊ฐ€ ํ—ค๋” ๋ฐ‘์œผ๋กœ ๋“ค์–ด๊ฐ€์„œ ์ž˜๋ฆฌ๋Š” ๋ฌธ์ œ๐Ÿง ์›์ธheader๊ฐ€ position: fixed๋กœ ์„ค์ •๋˜์–ด ์žˆ์œผ๋ฉด, section์ด ๊ทธ ๊ณต๊ฐ„์„ ์ž๋™์œผ๋กœ ์ธ์‹ํ•˜์ง€ ๋ชปํ•˜๊ณ  ์ตœ์ƒ๋‹จ์— ๋ถ™์–ด ์žˆ๋Š” ์ƒํƒœ๊ฐ€ ๋œ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด, section.visual์— margin-top์ด ์•„๋‹Œ padding-top์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.margin-top์€ ์š”์†Œ์˜ ์™ธ๋ถ€ ๋งˆ์ง„์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด์ง€๋งŒ, padding-top์€ ์š”์†Œ ๋‚ด์—์„œ ์‹ค์ œ ์ฝ˜ํ…์ธ ์˜ ์œ„์น˜๋ฅผ ์กฐ์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ณ ์ •๋œ header์˜ ํฌ๊ธฐ๋ฅผ ๊ณ ๋ คํ•ด์„œ ์š”์†Œ๋ฅผ ์ž๋ฆฌ์— ๋ฐฐ์น˜ํ•œ๋‹ค. โšก ํ•ด๊ฒฐ๋ฒ•header์˜ ๋†’์ด๋งŒํผ margin-top ์†์„ฑ ์ถ”๊ฐ€/* section...
โš ๏ธ ํ—ค๋”๋ฅผ ์œ„์— ๊ณ ์ •ํ•˜๋‹ˆ๊นŒ ์„น์…˜์ด ํ—ค๋” ๋ฐ‘์œผ๋กœ ๋“ค์–ด๊ฐ€์„œ ๊ฐ€๋ ค์ง€๋Š” ๋ฌธ์ œโš ๏ธ ํ–„๋ฒ„๊ฑฐ ๋ฒ„ํŠผ์ด๋ž‘ ๋กœ๊ณ  ๋ถ„๋ฆฌโš ๏ธ ํ–„๋ฒ„๊ฑฐ ๋ฒ„ํŠผ ์•„์ด์ฝ˜ X์ž๋กœ ๋ฐ”๊พธ๊ธฐโš ๏ธ ํ–„๋ฒ„๊ฑฐ ๋ฉ”๋‰ด margin-topโš ๏ธ ํ—ค๋”๋ž‘ ํ–„๋ฒ„๊ฑฐ ๋ฉ”๋‰ด ์•ˆ๊ฒน์น˜๊ฒŒ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑํ• ์ง€ - innerHeader์ด ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ–„๋ฒ„๊ฑฐ ๋ฉ”๋‰ด ๋„“์ด๋งŒํผ ์ด๋™ - ์‚ฌ๋žŒ ์ด๋ฏธ์ง€ ๋ฐฐ๊ฒฝ ์ œ๊ฑฐํ•ด์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋ฐ€๋ฆฌ๋„๋ก - ์‚ฌ๋žŒ ์‹ค๋ฃจ์—ฃ ๋”ฐ์„œ ๋™์ ์œผ๋กœ ์„ ์ด ์ƒ๊ธฐ๊ฒŒ ํ•˜๊ธฐโš ๏ธ Nav ๋ฉ”๋‰ด hover ํšจ๊ณผ ์ˆ˜์ •โš ๏ธ ํ–ฅ์ˆ˜ ์ด๋ฏธ์ง€์— ์ผ€๋Ÿฌ์…€ ์ถ”๊ฐ€ํ•˜๊ธฐ ๋‹ค๋ฅธ ํ–ฅ์ˆ˜๋กœ ์ „ํ™˜๋˜๊ฒŒ ์ผ๋‹จ ๋Œ€์ถฉ ์ ์–ด๋†“๊ณ  ๋‚˜์ค‘์— ์งœ์ง‘๊ธฐ ํ•ด์„œ ๊นƒ readMe์—์„œ ์“ฐ์ž ์˜ค๋Š˜ ํ•œ ๋ถ€๋ถ„ํ”„๋ž‘์Šค์–ด๋กœ "๊ฟˆ์˜ ํ–ฅ์ˆ˜", "๊ฟˆ์˜ ๋ฌผ"์„ ๋”ฐ์„œ  EAU DE REVE(์˜ค ๋“œ ๋ ˆ๋ธŒ)์ผ๋‹จ ๋ผˆ๋Œ€๋งŒ ๋งŒ๋“ค๊ณ  ํŽ˜์ด์ง€ 5๊ฐœ ์ •๋„ ์ถ”๊ฐ€ํ•˜์ž ๋กœ๊ณ  Canva ํฐํŠธ[๊ตฌ๊ธ€ ..
Java ํ”„๋กœ์ ํŠธ๋ฅผ ์„ค์ •ํ•  ๋•Œ ํ”„๋กœ์ ํŠธ ์šฐํด๋ฆญํ•˜๋ฉด Build Path๊ฐ€ ๋‚˜์˜จ๋‹ค. ์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๊ฐ€ Oracle JDBC ๋“œ๋ผ์ด๋ฒ„(ojdbc8.jar) ๊ฐ™์€ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ MySQL Connection(mysql-connector-java.jar)์ด๋ผ๋“ ์ง€ Getter์™€ Setter์„ ์ž๋™์ƒ์„ฑํ•˜๋Š” Lombok(lombok.jar) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋“ฑ๋ก ํ•ด ๋ณธ ์ ์ด ์žˆ์„ ๊ฒƒ์ด๋‹ค.  ํ•„์ž๋Š” ํ•ญ์ƒ ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์„ ์ถ”๊ฐ€ํ• ๋•Œ Classpath, Module Path ์ค‘ ์–ด๋””์— ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋Š”์ง€ ํ—ท๊ฐˆ๋ ธ๊ธฐ ๋•Œ๋ฌธ์— ์ด ๊ธ€์„ ์ž‘์„ฑํ•œ๋‹ค. Buildpath๋Š” ์ž๋ฐ”์—์„œ ์ค‘์š”ํ•œ ๊ฐœ๋…์ด๋ฉฐ, ์–ด๋–ค ๊ฒƒ์„ ๋“ฑ๋กํ•ด์•ผ ํ•˜๋Š”์ง€๋Š” ํ”„๋กœ์ ํŠธ ํ™˜๊ฒฝ๊ณผ ์‚ฌ์šฉ ๊ธฐ์ˆ ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง„๋‹ค. ์ด๋ก ์ ์ธ ์„ค๋ช…์€ ๊ฑด๋„ˆ  ๋›ฐ๊ณ  ์–ธ์ œ ModulePath..
์ƒ๋‹จ์œผ๋กœ