Spring - Mac M1(ARM)에서 Embedded Redis를 실행하지 못하는 이유와 해결 방법
·
나의 에러 일지
배경 JWT를 활용한 Spring Security를 작업하면서 Refresh Token을 저장하기 위해서 처음으로 Redis를 Spring에 적용한 후, 로컬 환경과 테스트에서 사용할 Embedded Redis를 힘들게 적용했다. 테스트도 무사히 통과해서 홀가분한 마음으로 풀 리퀘스트를 날리고 머지를 했는데, 조금 뒤 Mac(M1)을 사용하는 팀원이 말했다. “에러나는데?” Caused by: java.lang.RuntimeException: Can't start redis server. Check logs for details. Mac M1(ARM)에서 Embedded Redis가 실행하지 못하는 이유 M1에서 Embedded Redis를 실행하지 못하는 이유는 Redis가 M1의 ARM 프로세서 아키..
Spring - private 메서드에 @Transactional이 적용될까?
·
Why?
배경 오늘도 어김없이 private 메서드에 @Transactional 애너테이션을 적용했는데 오늘따라 SonarLint가 눈에 띄었다. @Transactional private void createRoles(Member member) { List roles = authorityUtils.createRoles(member.getEmail()); if (roles.isEmpty()) { throw new BusinessLogicException(ExceptionCode.MEMBER_ROLE_DOES_NOT_EXISTS); } member.setRoles(roles); } Non-public methods should not be "@Transactional" Bug Major java:S2230 Marki..
Spring - 로컬 환경을 위한 Embedded Redis 적용하기 (+ Can't start redis server. Check logs for details)
·
Spring
배경JWT를 활용한 Spring Security를 작업하면서 Refresh Token을 저장하기 위해서 처음으로 Redis를 Spring에 적용해 봤다. Redis를 공부하면서 알게 된 Embedded Redis가 무엇인지 정리해 보고 적용했던 과정을 정리해 본다. Embedded RedisEmbedded Redis는 로컬 개발 환경이나 테스트 환경에서 Redis를 쉽게 실행할 수 있도록 도와주는 도구이다. Embedded Redis를 사용하면 외부 Redis 서버를 설치하고 구성할 필요 없이 애플리케이션 내에서 Redis를 실행할 수 있다. 기존에는 Redis는 서버에서 실행되고 Redis 클라이언트가 Redis 서버에 연결해서 데이터를 조작한다. 하지만 Embedded Redis를 사용하면 애플리케이..
Spring - Redis를 사용해보자
·
Spring
배경 진행 중인 프로젝트의 Security 작업을 담당하면서 JWT Refresh Token을 Redis에 저장하여 관리하기로 했다. 왜 Redis? Redis는 메모리 기반의 Key-Value 저장소이다. 메모리에 데이터를 저장하기 때문에 훨씬 빠르게 데이터에 접근할 수 있다. 따라서, Redis를 캐시로 사용하면 웹 서버에서 반복적으로 사용되는 데이터를 메모리에 저장하여 매번 데이터베이스에서 읽어오는 비용을 아낄 수 있다. 가장 큰 이유는 Redis는 TTL(Time-To-Live) 기능을 제공하기 때문에 데이터의 만료 시간을 설정할 수 있기 때문이다. 이를 통해 서버에 저장할 Refresh Token의 만료 시간을 쉽게 설정할 수 있게 된다. 만료된 Refresh Token은 Redis에서 자동으로..
Spring - Spring Security + JWT 4편: Access Token 재발급
·
Spring
Spring Security + JWT 적용기 3편: 로그아웃에 이어지는 글입니다. Spring - Spring Security + JWT 적용기 3편: 로그아웃Spring Security + JWT 적용기 2편: JWT검증 이어지는 글입니다. Spring - Spring Security + JWT 적용기 2편: JWT 검증 `Spring Security + JWT 적용기 1편: 로그인`에 이어지는 글입니다. Spring - Spring Security + JWT 적용기 1green-bin.tistory.com이번에는 Refresh Token으로 Access Token을 재발급하는 과정에 대해 정리해보려고 한다. 왜 Refresh Token을 사용할까?로그인을 통해 JWT를 발급 받고 요청을 보낼 때 A..
Spring - Spring Security + JWT 적용기 3편: 로그아웃
·
Spring
Spring Security + JWT 적용기 2편: JWT검증 이어지는 글입니다. Spring - Spring Security + JWT 적용기 2편: JWT 검증`Spring Security + JWT 적용기 1편: 로그인`에 이어지는 글입니다. Spring - Spring Security + JWT 적용기 1편: 로그인 Spring Security란? Spring Security는 Spring에서 인증(Authentication)과 인가(Authorization) 기능을 지원하green-bin.tistory.com만약 사용자가 로그아웃을 하게되면 발급했던 토큰은 어떻게 관리해야 할까? 이번 시간에는 사용자가 로그아웃을 했을 때의 Security 처리에 대해 알아보자 로그아웃 흐름클라이언트에서 서버로..
Spring - Spring Security + JWT 적용기 2편: JWT 검증
·
Spring
`Spring Security + JWT 적용기 1편: 로그인`에서 이어지는 글입니다. Spring - Spring Security + JWT 적용기 1편: 로그인Spring Security란? Spring Security는 Spring에서 인증(Authentication)과 인가(Authorization) 기능을 지원하는 보안 프레임워크로써, Spring MVC 기반 애플리케이션에 보안을 적용하기 위한 표준이다. Spring Security 덕green-bin.tistory.com이전 글에서 Spring Security + JWT를 통한 로그인을 통해 서버에서 JWT를 생성해서 클라이언트에 보내주었다. 이제 클라이언트에서 요청과 함께 전달한 JWT Access Token을 검증해야 한다. JWT 검증 ..
Spring - Spring Security + JWT 적용기 1편: 로그인
·
Spring
Spring Security란?Spring Security는 Spring에서 인증(Authentication)과 인가(Authorization) 기능을 지원하는 보안 프레임워크로써, Spring MVC 기반 애플리케이션에 보안을 적용하기 위한 표준이다. Spring Security 덕분에 Interceptor나 Servlet Filter를 이용해서 직접 Security를 구현할 필요가 없다. 우리는 직접 구현하기보다 잘 만들어진 Spring Security를 이용하는 것이 좋은 선택이다. JWT를 사용한 이유세션 기반 인증 방식은 사용자의 로그인 정보를 서버 측에서 관리하기 때문에, 서버에 부하가 발생할 수 있다. 그리고 우리는 REST API를 이용한 CSR 방식의 백엔드 서버를 개발할 것이기 때문에 ..
Spring - 나의 첫 통합 테스트(Integration Test)
·
Spring
새로운 프로젝트를 진행하면서 가장 큰 목표 중 하나는 테스트 코드에 충분한 시간과 노력을 들여서 안정적인 애플리케이션을 개발하기였다. 이번에 처음 통합 테스트를 구현했던 과정과 배운 내용을 정리해 본다. (피드백 환영!) 통합 테스트 공통 Class 통합 테스트에 공통적으로 사용할 수 있는 공통 클래스를 만들었다. @Disabled @Transactional @SpringBootTest @AutoConfigureMockMvc @AutoConfigureRestDocs @ActiveProfiles("test") @ExtendWith(RestDocumentationExtension.class) public class BaseIntegrationTest { @Autowired protected MockMvc m..
Spring - Spring Profile로 다양한 개발 환경 설정 관리하기
·
Spring
새로운 프로젝트를 진행하면서 다양한 개발 환경에 맞게 애플리케이션 설정을 관리할 수 있는 프로파일을 적용하면서 알게 된 내용을 정리해 본다. 환경변수 yml 파일의 프로퍼티 값을 전달받아 스프링 애플리케이션 내부에서 사용할 수 있다. 예를 들어 yml에 다음과 같이 security.jwt.token.secret-key 라는 환경변수 값을 추가하고 스프링 빈에 주입해 주면 애플리케이션이 실행될 때 잘 동작한다. security: jwt: token: secret-key: testkey @Component publci class SecretKey { @Value("${security.jwt.token.secret-key"}) private String secretKey; } 그런데 개발 과정에서는 상황에 따..
Cold Bean
'분류 전체보기' 카테고리의 글 목록 (10 Page)