java 24

[Spring] Security Handler에 @Value 값 받아오기

URL의 하드코딩을 막기 위해 리팩토링을 하는 중, 에러가 났다. UriComponentsBuilder에서 @Value 의 값이 정상적으로 사용되지 않는 것을 확인하였고, 처음에는 UriComponentsBuilder의 문제라고 생각되서 단순 문자열로 만들어주었다. 하지만 똑같이 에러가 나는 것을 확인할 수 있었고, 불러온 ip의 값이 null이 되는 것을 찾아내었다. 그래서 Handler에서 값을 받는 방법을 찾아보다가, Spring의 Bean 등록 순서에 있어서의 문제라는 것을 확인하였다. 따라서 Config에서 다음과 같은 Bean을 static으로 추가해주고(static이여야 먼저 빈 등록이 되어 값을 가져올 수 있다) Config에서 Handler로 ip를 DI해주었다. @Bean public ..

java/spring 2022.12.06

[Spring] MapStruct @Mapping 에너테이션

string을 받아서 객체의 필드 값 string으로 매핑을 해주고 싶었는데, 이거때문에 전부 다 적자니 귀찮았다. 그래서 찾아보니까 @Mapping 에너테이션으로 처리가 가능했다. String -> Object.String @Mapping(source = "givenCoin", target = "givenCoin.code") @Mapping(source = "takenCoin", target = "takenCoin.code") Swap swapPostToSwap(SwapDto.Post requestBody); 참고 MapStruct 1.5.3.Final Reference Guide MapStruct 1.5.3.Final Reference Guide If set to true, MapStruct in w..

java/spring 2022.12.01

[Java] MimeMessageHelper를 이용하여 메일 전송

gmail smtp를 이용하여 자바로 메일을 자동 전송 로그인 이메일 인증, 비밀번호 찾기에 이용하기 위해 제작하였다. 1. Gmail 앱 비밀번호 설정 Gmail 계정 관리 - 보안 - Google에 로그인 - 앱 비밀번호 에서 앱 비밀번호를 생성해준다. 생성하고 제공받은 비밀번호를 복사해두자. 2. properties 설정 #메일 인증 spring.mail.host=smtp.gmail.com spring.mail.port=587 spring.mail.username= Gmail 계정 spring.mail.password= 앱 비밀번호 spring.mail.properties.mail.smtp.starttls.enable=true spring.mail.properties.mail.smtp.auth=tr..

java/spring 2022.11.28

[Spring Security] @AuthenticationPrincipal로 token claims 바로 받기

controller단에서 토큰 정보를 가지고 작업을 하고 싶을 때, 다음과 같이 간단하게 불러올 수 있다. 먼저 SecurityFilter에 다음과 같은 작업을 추가 /** * Authentication(인증) 객체를 SecurityContext 에 저장 */ private void setAuthenticationToContext(Map claims) { List authorities = customAuthorityUtils.createAuthorities(Role.valueOf((String) claims.get("roles"))); Authentication authentication = new UsernamePasswordAuthenticationToken(claims, null, authoriti..

java/spring 2022.11.23

[Spring Security] HttpSecurity.authorizeHttpRequests() 미적용

아직 해결하지 못한 문제. 토큰 생성과 인증은 잘 되는데, 권한에 따른 접근 제한을 주기 위해 HttpSecurity.authorizeHttpRequests()를 사용하려 했으나, 적용이 되지 않는 상황이다. 아래는 요청 로그와 필터 체인 목록이다. ************************************************************ Request received for GET '/users': org.apache.catalina.connector.RequestFacade@27ea5644 servletPath:/users pathInfo:null headers: authorization: Bearer 토큰값 user-agent: PostmanRuntime/7.29.2 accept:..

java/spring 2022.11.18

[Java] java.lang.StackOverflowError: null

어렵게 다가갈 오류가 아니었는데, 하필 보안 부분을 만지고 있어서 알아차리는데 꽤 오래걸렸다. 나같은 경우에는 무한루프로 이 오류가 나타나게 되었다. 다음 코드에서 에러가 발생했다. @Override public String getPassword() { return getPassword(); } 다시 보니 말도 안되는 코드를 적어놨다. 대놓고 무한루프 돌겠다는건데ㅋㅋㅋㅋㅋㅋㅋㅋㅋ 보통은 lombok이랑 jpa랑 같이 이용하면서 toString등의 메소드가 호출 반복되면서 발생한다고 한다. 이러한 경우에 다음과 같은 에러가 발생할 수 있다는 것을 알게 된 계기라고 생각하자.

java 2022.11.17

[JPA] Attribute Converter

JPA가 지원하지 않는 타입을 매핑하거나, 두 개 이상의 속성을 갖는 밸류 타입을 한 개 칼럼에 매핑할 때 Attribute Converter를 사용한다고 한다. 나같은 경우는 enum을 db에 넣으려고 할때, db에서는 int를 쓰고 자바 내에서는 String으로 쓰면 어떨까 생각하면서 찾아보다 발견했다. 아직 구현을 안해봐서 예시를 만들지는 못하겠고, 참고 자료 링크만 일단 걸어두고 필요할 때 공부할 예정이다. JPA 프로그래밍 입문 - AttributeConverter (gunju-ko.github.io) JPA 프로그래밍 입문 - AttributeConverter AttributeConverter 이 글은 “JPA 프로그래밍 입문 - 최범균저”에 있는 내용을 정리한 글 입니다. AttributeC..

java/JPA 2022.11.15