TIL/Java
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 (Java Runtime Environment) ์๋ฐ ์คํ ํ๊ฒฝ ์๋ฐ ํ๋ก๊ทธ๋จ์ ์คํํ๋๋ฐ ํ์ํ ๊ฒ ๋ชฉ์ JRE๋ Java ํ๋ก๊ทธ๋จ์ ์คํํ๋ ๋ฐ ํ์ํ ํ๊ฒฝ ์ ๊ณต ํ๋ก๊ทธ๋จ์ด ์ด๋ฏธ ์ปดํ์ผ๋์ด ์คํ ๊ฐ๋ฅํ ์ํ์ธ ๊ฒฝ์ฐ์ ์ฌ์ฉ ๊ตฌ์ฑ ์์ JRE์๋ Java ๊ฐ์ ๋จธ์ (JVM), ํด๋์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ, Java ์คํ ํ๊ฒฝ ํฌํจ ์ฌ์ฉ ์ฌ์ฉ์๋ JRE๋ฅผ ์ค์นํ์ฌ Java ํ๋ก๊ทธ๋จ์ ์คํํ ์ ์๋ค. JDK (Java Development Kit) ์๋ฐ ๊ฐ๋ฐ ๋๊ตฌ ๋ชฉ์ JDK๋ Java ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ ์ ํ๋ฆฟ์ ๊ฐ๋ฐํ๋ ๋ฐ ํ์ํ ๋๊ตฌ๋ค์ ํฌํจ ์ฆ, Java ํ๋ก๊ทธ๋จ์ ์์ฑ, ์ปดํ์ผ, ๋๋ฒ๊ทธํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ๊ธฐ๋ฅ์ด ์ ๊ณต ๊ตฌ์ฑ ์์ JDK์๋ JRE์ ๋ชจ๋ ๊ตฌ์ฑ ์์๋ฟ๋ง ์๋๋ผ ์ปดํ์ผ๋ฌ (javac), ๋๋ฒ..
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 ๊ธฐ๋ณธํ ๋ฐ์ดํฐ ํ์ , ์ฐธ์กฐํ ๋ฐ์ดํฐ ํ์
๊ธฐ๋ณธํ ๋ชจ๋ ์๋ฌธ์๋ก ์์๋๋ค ๋น๊ฐ์ฒด ํ์ ์ด๋ฏ๋ก 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..