OAuth2 ์„ค์ • ํŒŒ์ผ ์ž‘์„ฑํ•˜๊ธฐ
ยท
TIL/Java
@RequiredArgsConstructor@Configurationpublic class WebOAuthSecurityConfig { // ์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ ๊ธฐ๋Šฅ ๋น„ํ™œ์„ฑํ™” @Bean public WebSecurityCustomizer configure() { return (web) -> web.ignoring() .requestMatchers(toH2Console()) .requestMatchers("/img/**", "/css/**", "/js/**"); } @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { ..
Spring Security ํŒŒ์ผ ์„ค์ •ํ•˜๊ธฐ
ยท
TIL/Java
@Configuration@RequiredArgsConstructorpublic class WebSecurityConfig { private final UserDetailService userService; @Bean public WebSecurityCustomizer configure() { return (web) -> web.ignoring() .requestMatchers(toH2Console()) .requestMatchers("/static/**"); } @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception ..
JWT ํ† ํฐ ๊ธฐ๋ฐ˜ ๊ฐœ๋… ์•Œ์•„๋ณด๊ธฐ
ยท
TIL/Java
์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ธ์ฆ ์„œ๋ฒ„ ๊ธฐ๋ฐ˜ ์ธ์ฆ์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธํ•˜๋ฉด ์„œ๋ฒ„๊ฐ€ ์„ธ์…˜์„ ์ƒ์„ฑํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์„ธ์…˜ ID๋ฅผ ๋ฐœ๊ธ‰ํ•˜๋Š” ๋ฐฉ์‹์„œ๋ฒ„๋Š” ์ด ์„ธ์…˜ ID๋ฅผ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ์˜ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•จ๋™์ž‘ ๋ฐฉ์‹์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธํ•˜๋ฉด ์„œ๋ฒ„๋Š” ์„ธ์…˜์„ ์ƒ์„ฑํ•˜๊ณ , ํ•ด๋‹น ์„ธ์…˜ ID๋ฅผ ํด๋ผ์ด์–ธํŠธ์— ์ฟ ํ‚ค๋กœ ์ „๋‹ฌํ•œ๋‹ค.ํด๋ผ์ด์–ธํŠธ๋Š” ์ดํ›„ ์š”์ฒญ๋งˆ๋‹ค ์ด ์„ธ์…˜ ID๋ฅผ ์„œ๋ฒ„์— ์ „๋‹ฌํ•˜์—ฌ ์ธ์ฆ์„ ํ™•์ธํ•œ๋‹ค.์„œ๋ฒ„๋Š” ์„ธ์…˜ ์ €์žฅ์†Œ์—์„œ ์„ธ์…˜ ID๋ฅผ ํ™•์ธํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ธ์ฆํ•œ๋‹ค.์žฅ์ : ์„œ๋ฒ„์—์„œ ๊ด€๋ฆฌ๋˜๋ฏ€๋กœ ๋ณด์•ˆ์ด ๋น„๊ต์  ์‰ฝ๋‹ค.๋‹จ์ : ์„œ๋ฒ„์— ์„ธ์…˜์„ ์ €์žฅํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์„œ๋ฒ„์˜ ์ž์›์ด ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค.์„œ๋ฒ„๊ฐ€ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•˜๋ฏ€๋กœ, ์„œ๋ฒ„ ๊ฐ„ ์„ธ์…˜ ๋™๊ธฐํ™” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋กœ๊ทธ์ธํ•˜๋ฉด ์„œ๋ฒ„๊ฐ€ ์ธ์ฆ ํ† ํฐ์„ ์ƒ์„ฑํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ œ๊ณตํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ๋Š” ์ด..
thymeleaf layout ์ ์šฉํ•˜๊ธฐ (header, footer, main)
ยท
TIL/Java
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 ์ฐจ์ด
ยท
TIL/Java
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 ์•Œ์•„๋ณด์ž
ยท
TIL/Java
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 ์˜ค๋ฒ„๋กœ๋”ฉ๊ณผ ์˜ค๋ฒ„๋ผ์ด๋”ฉ
ยท
TIL/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 ๊ตฌ๋ถ„
ยท
TIL/Java
`@RequestParam`๊ณผ `@PathVariable`์€ Spring Framework์—์„œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์–ด๋…ธํ…Œ์ด์…˜์ž…๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค URL์—์„œ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์„ ์ถ”์ถœํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜์ง€๋งŒ ์‚ฌ์šฉ ๋ฐฉ์‹๊ณผ ๋ชฉ์ ์ด ์•ฝ๊ฐ„ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. 1. @RequestParam `@RequestParam` ์–ด๋…ธํ…Œ์ด์…˜์€ ๋ฉ”์„œ๋“œ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์— ์‚ฌ์šฉ๋˜๋ฉฐ, URL์˜ ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ถ”์ถœํ•  ๋•Œ ์‚ฌ์šฉ @GetMapping("/example") public String exampleMethod(@RequestParam String parameterName) { // ๋ฉ”์„œ๋“œ ๋‚ด์šฉ } - ์ฃผ๋กœ ๊ฒ€์ƒ‰ ํ•„ํ„ฐ, ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ, ์ •๋ ฌ ๊ธฐ์ค€ ๋“ฑ๊ณผ ๊ฐ™์€ ์š”์ฒญ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฐ›์„ ๋•Œ ์‚ฌ์šฉ 2. @PathVariable `..
๋ž˜๋‹ˆ
'TIL/Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก