목록전체 글 (462)
hyeonga_code
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ZGZ2i/btsHMzL1iQ8/IJykwlcrd8LYnryPFl6HSK/img.png)
UrlServiceTest > 기존 코드더보기package com.hyeongarl.service;import com.hyeongarl.config.jwt.TokenProvider;import com.hyeongarl.dto.UrlRequestDto;import com.hyeongarl.entity.Url;import com.hyeongarl.error.UrlAlreadyExistException;import com.hyeongarl.error.UrlInvalidException;import com.hyeongarl.error.UrlNotFoundException;import com.hyeongarl.repository.UrlRepository;import org.junit.jupiter.api.Dis..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cAYMk4/btsHL64tn3M/VN0Nv62DMkXRlu6cQb13wK/img.png)
목록 조회의 경우 Pageable을 사용하여 구현할 예정으로 추후 작업할 예정이다. UrlController > 작성 코드 /** * UrlAndCategory 수정 * @param urlId url ID * @param urlRequest 수정할 url 정보 * @return 수정된 UrlAndCategory 정보 */ @PutMapping("/{urlId}") public UrlResponseDto updateUrl(@PathVariable Long urlId, @RequestBody UrlRequestDto urlRequest) { return UrlResponseDto.fromEntity(urlService.updateUrl(urlI..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/TnKQP/btsHLGSD6HZ/527bxOraim3FX5nwzDCq8k/img.png)
문제. 이전에 작업한 코드들로 서버를 실행하고 postman에서 사용자 생성 > 로그인 > headers에 authorization 추가 > url 등록 시 @AuthenticationPrincipal 을 사용하여 userId를 추출하는 방법을 적용하려고 하였으나 현재 작성한 코드에서는 null로 처리되었다. 해결.현재 작성했던 TokenProvider에서는 token을 매개변수로 넘겨야 토큰에서 추출하는 과정만 있는 상태였다.token이 없는 상태에서 SecurityContextHolder에서 인증 정보를 가져와 사용자 정보를 추출하는 코드를 추가해서 작업했다. > 기존 코드더보기package com.hyeongarl.config.jwt;import com.hyeongarl.entity.User;imp..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cIfrNh/btsHLP9a5ao/RXW4Yghe4USKtRrLp776iK/img.png)
Project_03_Spring Security, JWT 구현Project_04_Spring Web LayerSpring Web Layer1. Web Layer뷰 템플릿 영역입니다.( @Controller, JSP, Freemarker ) 외부 요청과 응답에 대한 전반적인 영역입니다.( @Filter, 인터셉터, @ControllerAdvice ) 2. Service Layer@Service에hyeonga493.tistory.com 문제.Spring Security와 JWT를 사용하여 로그인 시 AccessToken을 발급하는 과정을 작성했다.postman에서의 실행과 테스트 코드 모두 성공했는데 이를 적용하는데 문제가 생겼다.SecurityFilterChain.java의 filterChain(웹 기반 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bmkVnZ/btsHKdJGaLx/5Vj2h1BcpImFWY1w3qHkxK/img.png)
Url 조회 기능1. UrlController > 기존 코드더보기package com.hyeongarl.controller;import com.hyeongarl.config.jwt.TokenProvider;import com.hyeongarl.dto.UrlRequestDto;import com.hyeongarl.dto.UrlResponseDto;import com.hyeongarl.entity.Url;import com.hyeongarl.service.UrlService;import jakarta.servlet.http.HttpServletRequest;import lombok.RequiredArgsConstructor;import org.springframework.http.HttpStatus;impo..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/wRgh8/btsHIGSLxHH/DLjmJUGl6CStrj7mKnrzA0/img.png)
url 다이어리 서비스를 제공할 예정이므로 url 관련 기능을 구현한다.1. Url Entitypackage com.hyeongarl.entity;import jakarta.persistence.*;import jakarta.validation.constraints.Size;import lombok.*;import org.hibernate.validator.constraints.URL;import java.time.LocalDateTime;/* @Table(name="") 데이터베이스의 name에 지정된 이름의 테이블과 매핑된다. @Entity JPA 엔티티임을 명시하여 데이터베이스 테이블의 레코드와 매핑 @Getter, @Setter 롬복 라이브러..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/rS6gf/btsHH7WngoU/QchATKGfz9FZZ2FveqxtI1/img.png)
Project_04_Spring Web LayerSpring Web Layer1. Web Layer뷰 템플릿 영역입니다.( @Controller, JSP, Freemarker ) 외부 요청과 응답에 대한 전반적인 영역입니다.( @Filter, 인터셉터, @ControllerAdvice ) 2. Service Layer@Service에 사용되는 서비스 영hyeonga493.tistory.com 요약User 테이블 설정(Entity, Dto, Repository)Service, Controller 구현SpringSecurity + JWT 구현TokenProviderTestAddUser() / UserControllerLogin() / AuthController1. api 모듈에 프로젝트 패키지 생성하기현재 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/V6kZV/btsHEzUSLM5/vBAISkSK4GYz5G9zpQBSW0/img.png)
예외를 처리하기 위해 @ContollreAdvice와 @ExceptionHandler를 사용하려고 한다.관련되어 구글링을 하다 보니 Enum 으로 에러코드를 모아 관리하는 방식을 많이 사용한 것을 볼 수 있었다.처음에는 Enum 클래스로 CODE/MESSAGE를 작성하고, ErrorResponse를 만들어 ExceptinoHandler에서 처리하도록 작업했다.문제. ErrorResponse가 가지고 있는 메세지와 코드는 메인 로직과는 상관이 없는 내용이다. 1. ErrorResponse 클라이언트로 넘겨줄 ErrorResponse 를 작성package com.hyeongarl.error;import lombok.Getter;import lombok.NoArgsConstructor;import lombo..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/WwrNY/btsHEOilfUi/uJeIVfW2KXFnFog17h0LqK/img.png)
새로운 프로젝트를 작업하면서 스프링부트에 대해 자세하게 알고 넘어가는 것이 아닌 급하게 처리하면서 작업을 하고 뒤죽박죽인 내용으로 인해 정리를 하고 넘어가려고 한다. 잘못된 부분이 있다면 알려주시면 감사하겠습니다. - 요약SpringBoot 프로젝트 생성.gitIgnore 정리멀티모듈 생성build.gradle 작성 및 빌드application.properties (프로젝트 설정) ? .properties / .yml 비교SpringBoot 실행(ApiApplication / ApiApplicationTests) 1. SpringBoot Generator 프로젝트 생성멀티 모듈을 사용하려고 한다.메인 프로젝트 폴더에는 코드가 포함되지 않으므로 src, build.gradle이 필요하..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/nGDzy/btsHCxhrxG0/NdWLIyJksNpqllVLh50kaK/img.png)
build.gradledependencies { // JWT implementation "io.jsonwebtoken:jjwt:0.9.1" // XML 문서와 자바 객체간 매핑 자동화 implementation 'javax.xml.bind:jaxb-api:2.3.1' // Spring Security for SimpleGrantedAuthority implementation 'org.springframework.boot:spring-boot-starter-security:2.7.17'} + build.gradle 전체 코드더보기plugins { id 'java' id 'org.springframework.boot' version '3.2.5' id 'io...