Java/Spring 8

[Spring Security] permitAll() 적용 안되는 문제

문제 상황 이번에 프로젝트를 진행하며넛 스프링 시큐리티를 이용하여 로그인을 하는 기능을 구현할 일이 있었다. 진행 과정 중에 permitAll()을 이용해서 접근 권한을 설정하는 부분에서 계속 무한히 login 페이지로 리다이렉팅하는 문제가 생겼다. 문제가 생긴 코드는 다음과 같다. package com.tutormatching.dotommorow.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; ..

Java/Spring 2024.01.10

[Spring] 스프링 부트 3.x에서 querydsl 사용하기(Intellij)

원래 2.7버전을 사용하다 최근에 start.spring.io에서 3.x버전만 지원하는 형태로 바뀌었다. 그러면서 querydsl에 대한 설정도 맞춰 변경을 해야 하는데 3.x버전에 대해 여러 정보들 중에 작동한 설정만 가져왔다. 먼저 gradle에 다음과 같은 코드를 추가해 준다. //querydsl implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta" annotationProcessor "jakarta.annotation:jakarta.anno..

Java/Spring 2023.12.01

테스트 코드에서 로그를 찍어보자!

junit을 이용해 테스트 코드를 작성하다보면 log를 사용하여 어떤 결과가 나오는지 뽑아보고 싶을 때가 있다. 이때 사용할 수 있는 어노테이션으로 @Slf4j가 있는데 소스 코드에서는 스프링 부트 사용시 그냥 사용이 가능한데 테스트 코드에서 해당 어노테이션을 사용하려면 다음과 같이 설정해야 한다. 먼저 gradle 파일의 dependencies에 아래 설정을 추가한다. testCompileOnly 'org.projectlombok:lombok' testAnnotationProcessor 'org.projectlombok:lombok' 이후 테스트 코드에서 @Slf4j를 추가한다.

Java/Spring 2023.12.01

[Spring] getParameter 메소드

파일 처리와 관련된 공부를 하다가 getParameter 메소드에 대한 궁금증이 생겼다. 먼저 필자가 알고 있던 내용은 다음과 같다. getParameter 메소드는 Http 요청이 왔을 때, parameter의 값을 얻을 수 있는 메소드이다. 파라미터는 get 요청에서는 www.example.com?name=limecoding에서 서 name=limecoding에 해당하고 post 요청에서는 body안에 name=limecoding을 말한다. request.getParameter(파라미터 이름)과 같은 형식으로 사용할 수 있다. 그런데 파일 전송을 하다보면 multipart-formdata를 사용하는데 이때 형식은 다음과 같은 형태이다. 바디 부분을 보면 ------WebKitFormBoundary와 ..

Java/Spring 2023.11.14

[Thymeleaf] 타임리프 header와 footer 관리하기

처음엔 가장 사용하기 쉬운 mustache를 이용하여 header와 footer를 중복해서 쓰지 않는 방법을 배웠다. 그러나 스프링 진영에 공식적으로 밀고있는 타임리프는 아직 사용방법이 미숙하여 관리하는 법을 모르고있었는데 책을 읽다 알게 되어 정리하려고 한다. 먼저 Thymeleaf layout dialect를 의존성에 추가한다. nz.net.ultraq.thymeleaf thymeleaf-layout-dialect 그리고 header, footer, layout, index 파일을 만들어준다. 스프링에서는 resources 밑에 자원을 넣는다. 폴더 구조를 잘 보고 주의해서 넣자! 각 파일의 코드는 다음과 같다. header 파일 header 영역입니다. footer 파일 footer 영역입니다. l..

Java/Spring 2023.09.12

o.s.b.d.LoggingFailureAnalysisReporter 에러 해결

스프링 프로젝트 환경설정을 위해 spring initializer를 이용했다. 이떄 의존성으로 lombok, web-starter, mustache, spring JPA를 동시에 의존성으로 받아줬다. 그리고 바로 실행했는데 다음과 같은 에러가 나왔다. 찾아본 결과 해당 에러는 데이터베이스 설정과 관련된 에러였다. 그런데 기본 설정만 한 상태로 바로 스프링을 실행했기에 크게 에러가 나올 상황이 없었는데 에러가 나서 당황했다. 일단 데이터베이스 문제가 있을 때 생기는 에러라는 것을 알았기 때문에 spring JPA를 삭제하고 다시 돌려보니 문제가 없어졌다. 위 나온 오류와 경험을 토대로 판단한 결과 보통 JPA를 사용할 때 사용할 데이터베이스를 같이 설정해주는데 여기서는 데이터베이스 설정을 하지 않아 JPA..

Java/Spring 2023.09.01

[Spring] Controller와 RestController의 차이

@Controller 스프링의 전통적인 컨트롤러 @Component의 구체적인 버전이다. MVC 패턴에서의 Controller 역할임을 알려준다. classpath scanning을 통해 구현된 클래스를 자동으로 인식할 수 있게 해준다. -> 좀 더 공부 필요 주로 @controller와 @RequestMapping을 조합하여 요청 관련 메소드에 사용한다. @Controller를 사용하는 요청 관련 메소드에 @ResponseBody를 달아서 HttpResponse로 돌려주도록 만든다. @RestController 스프링 4.0버전에서 처음 소개됐으며, RESTful 웹 서비스를 쉽게 만들수 있도록 해줌 @Controller의 구체적인 버전이다. @RestController는 @Controller와 @Re..

Java/Spring 2023.08.17

스프링 3.0과 스프링 시큐리티 6에 대한 정보

스프링부트 3.0이상 Spring Security 기본 세팅 (스프링 시큐리티) - Nahwasa 스프링부트 3.0이상 Spring Security 기본 세팅 (스프링 시큐리티) 목차 [수정 사항] 2023-03-29 : 커스텀 어노테이션 적용하는 부분에서 소스코드에 잘못 들어간 코드가 있어서 삭제 1. 시작하기 전에 1.1 설정 이해 보다는 당장 시큐리티 설정 복붙이 필요한 분들에 nahwasa.com 여기 블로그를 참조해보자!

Java/Spring 2023.08.15