본문 바로가기

Java190

JPA 실전2편 - 회원 관련 API 회원등록 API 요청 값으로 엔티티 대신에 DTO를 RequestBody에 매핑한다. @PostMapping("/api/v2/members") public CreateMemberResponse saveMemberV2(@RequestBody @Valid CreateMemberRequest request){ Member member = new Member(); member.setName(request.getName()); Long id = memberService.join(member); return new CreateMemberResponse(id); } @Data //api용 DTO, 이렇게하면 api스펙 까지 않아도 뭐가 넘어오는지 알 수 있음.절대 엔티티로 바로 사용하지 마시오 static class.. 2023. 12. 7.
SPRING SECURITY with JWT 토큰기반 인증이란? 토큰 기반 인증은 인증에 토큰을 사용하는 방식이다. 토큰은 클라이언트를 구분하는데 사용하는 유일한 값, 서버에서 생성해서 클라이언트에게 제공한 뒤, 클라이언트는 서버에 요청할 때마다 요청 내용과 토큰을 전송한다. 서버는 토큰으로 유효한 사용자인지 검증한다. JWT는 토큰 기반인증에서 주로 사용하는 토큰 중 하나이다. 헤더,내용,서명 구조로 이루어져있다. 리프레시 토큰은 액세스 토큰이 만료되었을 때 새로운 액세스 토큰을 발급하는 용도로 사용한다. Security Context는 인증 객체가 저장되는 보관소로, 인증 정보가 필요할 때 언제든지 인증 객체를 꺼내어 사용하도록 제공되는 클래스이다. 이것을 저장하는 객체가 Security Context Holder이다. jwt라이브러리 중 가장.. 2023. 12. 5.
Thymeleaf 기본 타임리프 익히기 취미 (대표 취미) 글 보기 표현식 설명 ${...} 변수의 값 #{...} 속성 파일 값 @{...} url 표현식 *{...} th:object에서 선택한 객체에 접근 문법 설명 th:text 텍스트 표현 th:each 컬렉션 반복할 때 사용 th:if 조건이 true인 경우 표시 th:unless 조건이 false인 경우 표시 th:href 이동 경로 th:with 변수값으로 지정 th:object 선택한 객체로 지정 날짜형식을 포매팅하는 함수 (LocalDateTime -> yyyy-MM-dd HH:mm) 본 포스팅은[스프링부트 3 백엔드 개발자되기: 자바 편] 을 참고하였습니다. 2023. 12. 4.
Junit & AssertJ package com.blog; import org.junit.jupiter.api.*; public class JUnitCycleTest { @BeforeAll // 전체 테스트 시작 전 1회 실행 (static으로 선언) static void beforeAll(){ // DB 연결이나 테스트 환경 초기화할 때 사용 System.out.println("@BeforeAll"); } @BeforeEach // 테스트 케이스 시작 전마다 실행 public void beforeEach(){ // 메서드에 사용되는 객체 초기화하거나 미리 필요한 값을 넣는 경우 사용 System.out.println("@BeforeEach"); } @Test public void test1(){ System.out.println.. 2023. 12. 2.
Thymeleaf 경로 설정하기 thymeleaf에서 static에 있는 정적 리소스를 접근하려면 이런식으로 바로 접근이 가능하다(현재 프로젝트에는 static/assets/js/js파일 구조 이다.) 하지만 templates의 도메인별 폴더를 만들어서 thymeleaf-layout-dialect를 적용했더니 경로가 안맞아서 파일이 다 깨졌다... thymeleaf 공부안하고 무작정 하니 이런 문제가 발생하는구나. thymleaf에도 jsp처럼 Context Path 사용이 가능하다. @{/} 표현식으로 상대경로 문제를 처리해줄 수 있다. See User Profile 변수 표현식도 중첩 사용가능하다. 여러개의 매개변수도 쉼표로 구분해서 사용 가능하다. @{/order/process(execId=${execId},execType='FA.. 2023. 11. 30.
spring security에서 @PreAuthorize가 안먹힐때 (SpringBoot 3.0 이상) 나는 컨트롤러 메소드에 API별로 @PreAuthorize를 넣었는데 시큐리티가 해당 어노테이션을 수행하지 않았다. 그래서 검색해봤다. 클래스 상단에 @EnableMethodSecurity를 붙여주면 해결된다. import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity; 아쉽게도 spring security6버전 이상 자료는 아직 많이 없는 듯 하다.... package com.nahwasa.springsecuritybasicsettingforspringboot3.controller; import org.springframework.security.access.prepost.PreAuthori.. 2023. 11. 27.