TIL/Java

    thymeleaf layout ์ ์šฉํ•˜๊ธฐ (header, footer, main)

    thymeleaf layout ์ ์šฉํ•˜๊ธฐ (header, footer, main)

    1. ํ™˜๊ฒฝ๊ตฌ์ถ• * ํƒ€์ž„๋ฆฌํ”„์™€ ํƒ€์ž„๋ฆฌํ”„ ๋ ˆ์ด์•„์›ƒ์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ 1-1. maven ์˜์กด์„ฑ ์ถ”๊ฐ€ https://mvnrepository.com/artifact/nz.net.ultraq.thymeleaf/thymeleaf-layout-dialect nz.net.ultraq.thymeleaf thymeleaf-layout-dialect 3.1.0 1-2. gradle ์˜์กด์„ฑ ์ถ”๊ฐ€ dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect' } 2. application.proper..

    jre jdk ์ฐจ์ด

    jre jdk ์ฐจ์ด

    JRE (Java Runtime Environment) ์ž๋ฐ” ์‹คํ–‰ ํ™˜๊ฒฝ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๊ฒƒ ๋ชฉ์  JRE๋Š” Java ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ํ™˜๊ฒฝ ์ œ๊ณต ํ”„๋กœ๊ทธ๋žจ์ด ์ด๋ฏธ ์ปดํŒŒ์ผ๋˜์–ด ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ƒํƒœ์ธ ๊ฒฝ์šฐ์— ์‚ฌ์šฉ ๊ตฌ์„ฑ ์š”์†Œ JRE์—๋Š” Java ๊ฐ€์ƒ ๋จธ์‹ (JVM), ํด๋ž˜์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, Java ์‹คํ–‰ ํ™˜๊ฒฝ ํฌํ•จ ์‚ฌ์šฉ ์‚ฌ์šฉ์ž๋Š” JRE๋ฅผ ์„ค์น˜ํ•˜์—ฌ Java ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. JDK (Java Development Kit) ์ž๋ฐ” ๊ฐœ๋ฐœ ๋„๊ตฌ ๋ชฉ์  JDK๋Š” Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ ์• ํ”Œ๋ฆฟ์„ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋„๊ตฌ๋“ค์„ ํฌํ•จ ์ฆ‰, Java ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑ, ์ปดํŒŒ์ผ, ๋””๋ฒ„๊ทธํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ธฐ๋Šฅ์ด ์ œ๊ณต ๊ตฌ์„ฑ ์š”์†Œ JDK์—๋Š” JRE์˜ ๋ชจ๋“  ๊ตฌ์„ฑ ์š”์†Œ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ปดํŒŒ์ผ๋Ÿฌ (javac), ๋””๋ฒ„..

    java lombok annotation ์•Œ์•„๋ณด์ž

    java lombok annotation ์•Œ์•„๋ณด์ž

    Lombok์ด๋ž€ Lombok์€ Java ์–ธ์–ด๋ฅผ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, ๋ฐ˜๋ณต์ ์ด๊ณ  ์žฅํ™ฉํ•œ ์ฝ”๋“œ๋ฅผ ์ค„์ด๊ณ ์ž ๋งŒ๋“ค์–ด์ง„ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ์ฃผ์š” ๋ชฉํ‘œ๋Š” ์ฝ”๋“œ ์ž‘์„ฑ์„ ๊ฐ„์†Œํ™”ํ•˜๊ณ  ๊ฐ€๋…์„ฑ์„ ํ–ฅ์ƒ์‹œ์ผœ ๊ฐœ๋ฐœ์ž๋“ค์ด ๋ณด๋‹ค ํšจ์œจ์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š” ๊ฒƒ Lombok์€ ์ฃผ๋กœ ํ”„๋กœ์ ํŠธ์˜ ์˜์กด์„ฑ์— ์ถ”๊ฐ€ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋ฉฐ, IDE์— Lombok ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์„ค์น˜ํ•˜์—ฌ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 1. maven org.projectlombok lombok true 2. gradle dependencies { compileOnly 'org.projectlombok:lombok:1.18.20' annotationProcessor'org.projectlombok:lombok:1.18.20' } 1. `@Data`: Getter, Setter..

    java ์˜ค๋ฒ„๋กœ๋”ฉ๊ณผ ์˜ค๋ฒ„๋ผ์ด๋”ฉ

    ์˜ค๋ฒ„๋กœ๋”ฉ (Overloading) ์˜ค๋ฒ„๋กœ๋”ฉ์€ ๊ฐ™์€ ๋ฉ”์„œ๋“œ ์ด๋ฆ„์„ ๊ฐ€์ง€๋ฉด์„œ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ํƒ€์ž…, ๊ฐœ์ˆ˜, ๋˜๋Š” ์ˆœ์„œ๊ฐ€ ๋‹ค๋ฅธ ์—ฌ๋Ÿฌ ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ฒ„๋กœ๋”ฉ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋“ค์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์†Œ๋“œ์˜ ์ด๋ฆ„์ด ์ผ์น˜ํ•ด์•ผ ํ•จ ๋ฉ”์†Œ๋“œ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๊ฐœ์ˆ˜ ๋˜๋Š” ํƒ€์ž…์ด ๋‹ฌ๋ผ์•ผ ํ•จ (๊ฐœ์ˆ˜๊ฐ€ ๊ฐ™๋‹ค๋ฉด ํƒ€์ž…, ํƒ€์ž…์ด ๊ฐ™๋‹ค๋ฉด ๊ฐœ์ˆ˜๋ฅผ ๋‹ค๋ฅด๊ฒŒ ํ•ด์•ผํ•จ) ๋ฉ”์†Œ๋“œ์˜ return ํƒ€์ž…์ด ๋‹ฌ๋ผ์•ผ ํ•จ public class Calculator { public int add(int a, int b) { return a + b; } public double add(double a, double b) { return a + b; } public String concatenate(String str1..

    Spring , RequestParam๊ณผ PathVariable ๊ตฌ๋ถ„

    `@RequestParam`๊ณผ `@PathVariable`์€ Spring Framework์—์„œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์–ด๋…ธํ…Œ์ด์…˜์ž…๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค URL์—์„œ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์„ ์ถ”์ถœํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜์ง€๋งŒ ์‚ฌ์šฉ ๋ฐฉ์‹๊ณผ ๋ชฉ์ ์ด ์•ฝ๊ฐ„ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. 1. @RequestParam `@RequestParam` ์–ด๋…ธํ…Œ์ด์…˜์€ ๋ฉ”์„œ๋“œ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์— ์‚ฌ์šฉ๋˜๋ฉฐ, URL์˜ ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ถ”์ถœํ•  ๋•Œ ์‚ฌ์šฉ @GetMapping("/example") public String exampleMethod(@RequestParam String parameterName) { // ๋ฉ”์„œ๋“œ ๋‚ด์šฉ } - ์ฃผ๋กœ ๊ฒ€์ƒ‰ ํ•„ํ„ฐ, ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ, ์ •๋ ฌ ๊ธฐ์ค€ ๋“ฑ๊ณผ ๊ฐ™์€ ์š”์ฒญ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฐ›์„ ๋•Œ ์‚ฌ์šฉ 2. @PathVariable `..

    java ์ž๋ฃŒ๊ตฌ์กฐ

    ์ž๋ฃŒ๊ตฌ์กฐ(Collection) ์‹œ์Šคํ…œ์— ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์กฐ์ž‘, ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์—ฐ๊ตฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์ ˆ์ฐจ๋‚˜ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์—ฐ๊ตฌ ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ(Collection Framework) Set HashSet TreeSet ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ์ด๋‹ค ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค ์ž์ฒด์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ผ ๋ฐฉ๋ฒ•์ด ์—†๋‹ค (→ Iterator ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ผ ์ˆ˜ ์žˆ๋‹ค) List Vector ArrayList LinkedList Stack Queue ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต ํ—ˆ์šฉ ์ž์ฒด์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ผ ์ˆ˜ ์žˆ๋Š” get์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค Map HashMap TreeMap HashTable Properties ํ‚ค(key)์™€ ๊ฐ’(value)์˜ ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ์ด๋‹ค ์ˆœ์„œ๋Š” ์œ ์ง€..

    java dip ์œ„๋ฐ˜์ด ๋ฌด์Šจ ๋ง์ผ๊นŒ

    DIP DIP(Dependency Inversion Principle)๋Š” SOLID ์›์น™ ์ค‘ ํ•˜๋‚˜๋กœ, ์˜์กด ๊ด€๊ณ„๋ฅผ ์—ญ์ „์‹œํ‚ค๋Š” ์›์น™ ์ด ์›์น™์€ ๊ณ ์ˆ˜์ค€ ๋ชจ๋“ˆ์€ ์ €์ˆ˜์ค€ ๋ชจ๋“ˆ์— ์˜์กดํ•ด์„œ๋Š” ์•ˆ ๋˜๋ฉฐ, ๋‘˜ ๋ชจ๋‘ ์ถ”์ƒํ™”์— ์˜์กดํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ถ”์ƒํ™”๋Š” ๊ตฌ์ฒด์ ์ธ ๊ตฌํ˜„์— ์˜์กดํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์‹œ์Šคํ…œ์ด ์œ ์—ฐํ•˜๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ–์ถœ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์ œ ```java public class LightBulb { public void turnOn() { // ์ „๊ตฌ๋ฅผ ์ผœ๋Š” ๋™์ž‘ } } public class Switch { private LightBulb bulb; public Switch() { this.bulb = new LightBulb(); } public void operate() { bu..

    java ๊ธฐ๋ณธํ˜• ๋ฐ์ดํ„ฐ ํƒ€์ž…, ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ ํƒ€์ž…

    java ๊ธฐ๋ณธํ˜• ๋ฐ์ดํ„ฐ ํƒ€์ž…, ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ ํƒ€์ž…

    ๊ธฐ๋ณธํ˜• ๋ชจ๋‘ ์†Œ๋ฌธ์ž๋กœ ์‹œ์ž‘๋œ๋‹ค ๋น„๊ฐ์ฒด ํƒ€์ž…์ด๋ฏ€๋กœ null ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์—†๋‹ค. (๊ธฐ๋ณธ๊ฐ’์ด ์ •ํ•ด์ ธ ์žˆ์Œ) ๋ณ€์ˆ˜์˜ ์„ ์–ธ๊ณผ ๋™์‹œ์— ๋ฉ”๋ชจ๋ฆฌ ์ƒ์„ฑ ๋ชจ๋“  ๊ฐ’ ํƒ€์ž…์€ ๋ฉ”๋ชจ๋ฆฌ์˜ ์Šคํƒ(stack)์— ์ €์žฅ๋จ ์ €์žฅ๊ณต๊ฐ„์— ์‹ค์ œ ์ž๋ฃŒ ๊ฐ’์„ ๊ฐ€์ง„๋‹ค ํƒ€์ž… ๋ฉ”๋ชจ๋ฆฌํฌ๊ธฐ ๋ฐ์ดํ„ฐ ํ‘œํ˜„ ๋ฒ”์œ„ boolean ๋…ผ๋ฆฌ 1 byte true, false char ๋ฌธ์ž 1 byte 0 ~ 65,535 ๋ชจ๋“  ์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž(์œ ๋‹ˆ์ฝ”๋“œ๋ผ 2๋ฐ”์ดํŠธ) byte ์ •์ˆ˜ 1 byte -128 ~ 127 short ์ •์ˆ˜ 2 byte -32,768 ~ 32,767 int ์ •์ˆ˜ 4 byte -2,147,483,648 ~ 2,147,483,647 long ์ •์ˆ˜ 8 byte -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 f..