spring69 [쿠링] 효율적인 Log 관리를 위한 여정 - 1 1. 문제가 되는 상황 여유가 생겼을 때 쿠링이 Log를 남기고 있는 과정에 대하여 한번 고민해보고 싶었다. 오늘 글은 크게 3가지에 대한 고민으로부터 시작되었다. 1) Log의 level이 적합한가? (이번 글에서 해결할 내용) 2) Log 파일의 사이즈가 너무 커지지 않도록 나뉘어 저장되고 있는가? (이번 글 에서 해결할 내용) 3) Log의 모니터링이 편리하게 되고 있는가? (추가 글에서 다룰 예정) 일단 2가지에 대하여 답해보면, 현 쿠링은 "아니요"라고 답할 수 있을 거 같다. 크게 기준없이 설정된 log들의 level, 더 나아가 log를 보기 위해서는 직접 EC2에 접근하여 로그 파일을 살펴봐야 했다... 또한 로그가 중요하다는 생각에 무분별하게 남기는 것이 과연 좋은가? 나는 습관적으로 예.. BackEnd/쿠링 2023. 8. 27. [Spring] @Async와 ThreadPoolTaskExecutor 1. ThreadPoolTaskExecutor 스레드 풀을 사용하는 Executor java.util.concurrent.Executor를 Spring에서 구현한 것 이다. org.springframework.scheduling.concurrent 패키지에서 제공 주로 spring에서 비동기처리를 위해 사용 스레드풀을 사용하여 멀티스레드 구현을 손쉽게 해준다. Default 생성자 하나만 존재 2. Configuration 2 - 1) Pool size configuration @Bean public ThreadPoolTaskExecutor shineTaskExecutor() { ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor(); ta.. BackEnd/Spring 2023. 3. 26. [Spring Security] SecurityConfig와 UserDetailsService에서 순환참조 문제 (Error creating bean with name 'securityConfig': Requested bean is currently in creation: Is there an unresolvable circular reference?) 1. 문제의 상황 우선 Custom한 AuthenticationProvider를 구현하던 도중, 구현의 편의를 위해 @Autowired로 필요한 의존성들을 끌어다 사용 중 이었다. 또한 정상적으로 실행되고 있었다. 기능이 구현된 후에 단지 의존성 주입방식을 생성자 주입 방식으로 변경 테스트를 수행했는데 다음과 같은 에러가 발생하였다! SecurityConfig memberDetailsService(UserDetailsService) 간에 순환 참조 문제가 발생하게 된 것 이다! 우선 문제가 되고 있는 코드를 살펴보자! ▶ LoginAuthenticationProvider @RequiredArgsConstructor public class LoginAuthenticationProvider implement.. BackEnd/Spring Security 2023. 2. 8. [Spring] SpringSecurity에서 @AuthenticationPrincipal 대신 DTO로 받기 1. 문제의 상황 현 술술 애플리케이션에서는 로그인 한 사용자가 Controller에 접근할 때 CustomUser 객체를 인자로 전달받는다. 문제는 CustomUser가 도메인의 순수한 핵심 Entity라는 점이다... 또한 SonarQube에서도 다음과 같이 취약지점으로 알려주고 있다. 과연 CustomUser의 모든 정보가 필요한 것일까? 아니다, 사실상 코드를 따라가며 읽어보니, id, email 2개의 값만 필요함을 알게 되었다. 따라서 이를 id, email만을 포함하는 DTO로 전달받도록 개선해 보자! 참고로, @CurrentUser는 내부에 @AuthenticationPrincipal을 갖고 있어서 Spring의 도움을 받아 마치 상속하는것 처럼 사용중이다. 이글의 목적은 @Authenti.. BackEnd/Spring 2023. 1. 2. [Spring] Feign Client 적용기 개인 프로젝트를 수행하던 도중 Kakao에 위경도를 전달하여 주소로 변환해야 하는 과정이 필요했다. 맨 처음에는 RestTemplate를 생각했지만, deprecated 되었다고 한다. 따라서 WebFlux의 WebClient 사용을 권장하고 있지만, 사실 우리의 애플리케이션에서는 비동기 처리가 필요 없다 생각되었다. https://stackoverflow.com/questions/47974757/webclient-vs-resttemplate WebClient vs RestTemplate As per spring 5: WebClient is an interface representing the main entry point for performing web requests. It has been crea.. BackEnd/Spring 2022. 12. 20. [Spring] @Configuration 이란? 이번 글에서는 @Configuration을 사용하는 이점에 대하여 정리해볼까 한다. 1. @Configuration 이란? " data-ke-type="html"> HTML 삽입 미리보기할 수 없는 소스 Spring에서 Bean을 수동으로 등록하기 위해서는, 설정 class위에 @Configuration을 추가하고, @Bean을 사용해 수동으로 빈을 등록할 수 있다. 이때 메서드 이름으로 빈의 이름이 결정된다. 그러므로 중복된 빈 이름이 존재하지 않도록 주의해야 한다. 예를 들면 다음과 같을 것이다. @Configuration public class SomeConfig { @Bean public ShineResource shine() { return new ShineResource(); } } 일반적으로.. BackEnd/Spring 2022. 9. 12. [Spring Security] Authorization, FilterSecurityInterceptor 본 글은 Spring Security docs 와 여러 블로그 들을 참고하고, 공부하면서 요약하였습니다. https://docs.spring.io/spring-security/reference/servlet/authorization/authorize-requests.html Authorize HttpServletRequest with FilterSecurityInterceptor :: Spring Security By default, Spring Security’s authorization will require all requests to be authenticated. The explicit configuration looks like: docs.spring.io 1. Authorization, Fi.. BackEnd/Spring Security 2022. 9. 3. [Spring Security] AuthenticationProvider 본 글은 Spring Security docs 와 여러 블로그 들을 참고하고, 공부하면서 요약하였습니다. https://docs.spring.io/spring-security/reference/servlet/authentication/architecture.html#servlet-authentication-authenticationprovider Servlet Authentication Architecture :: Spring Security ProviderManager is the most commonly used implementation of AuthenticationManager. ProviderManager delegates to a List of AuthenticationProviders. E.. BackEnd/Spring Security 2022. 9. 2. [Spring Security] Authentication Flow 본 글은 Spring Security docs 와 여러 블로그 들을 참고하고, 공부하면서 요약하였습니다. https://docs.spring.io/spring-security/reference/servlet/authentication/architecture.html#servlet-authentication-abstractprocessingfilter Servlet Authentication Architecture :: Spring Security ProviderManager is the most commonly used implementation of AuthenticationManager. ProviderManager delegates to a List of AuthenticationProviders... BackEnd/Spring Security 2022. 8. 27. [Spring Security] SecurityContextPersistenceFilter 본 글은 Spring Security docs 와 여러 블로그 들을 참고하고, 공부하면서 요약하였습니다. https://docs.spring.io/spring-security/reference/servlet/authentication/persistence.html#securitycontextpersistencefilter Persisting Authentication :: Spring Security The first time a user requests a protected resource, they are prompted for credentials. One of the most common ways to prompt for credentials is to redirect the user to a l.. BackEnd/Spring Security 2022. 8. 27. [Spring Security] SecurityContextHolder, SecurityContext 본 글은 Spring Security docs 와 여러 블로그 들을 참고하고, 공부하면서 요약하였습니다. https://docs.spring.io/spring-security/reference/servlet/authentication/architecture.html#servlet-authentication-securitycontextholder Servlet Authentication Architecture :: Spring Security ProviderManager is the most commonly used implementation of AuthenticationManager. ProviderManager delegates to a List of AuthenticationProviders. Ea.. BackEnd/Spring Security 2022. 8. 25. [Spring] @Profile과 @ActiveProfiles 를 통한 활성 프로파일(Profile)의 관리 개발을 진행하다보면 환경설정 파일들을 분리하거나, 가져와야하는 경우가 많다. 이에 대하여 알아보자. 우선 활성프로필에 대하여 잠시 알아봅시다. ▶ 활성 프로파일 활성 프로파일이란 스프링 컨테이너를 실행할 때 실행 환경을 지정해주는 속성으로, 환경을 구분하기 위해 사용된다. 프로파일은 JVM의 옵션으로도 설정을 할 수 있고, 스프링에서도 설정을 할 수 있다. JVM 옵션으로 프로파일을 설정하기 위해서는 다음처럼 옵션을 지정해줄 수 있다. -Dspring.profiles.active=dev 우리에게 주어진 활성 프로필이 test, prod, dev 과 같이 3개의 환경이 있다고 생각해보자. 1. @Profile 을 통한 특정 Profile에 활성화 시키기 예를 들어 특정 운영 환경, dev 에서만 사용하기를.. BackEnd/Spring 2022. 8. 23. 이전 1 2 3 4 ··· 6 다음