개발 공부/스프링
[SpringBoot] response.sendRedirect(url)가 동작하지 않는 경우
현재 상황 - 인증, 인가 관련 예외 처리를 진행하던 중, AuthenticationEntryPoint에서 응답을 주기 위해서 redirect를 하고 있었다. - 흐름은 AuthenticationEntryPoint -> sendRedirect("/exception/**") -> ExceptionController에서 throw new CustomException -> ControllerAdvice에서 해당 exception에 대한 예외 처리 - 그러나 해당 response가 Controller까지 도달하지 못하고 계속 요청이 동작하지 않는다. - 프로젝트에는 스프링 시큐리티가 적용되어 있다. 문제 Could not get response Error: Exceeded maxRedirects. Probabl..
[SpringBoot] Custom Exception 에러 처리 및 리팩토링 (Custom Exception)
현재 상황 현재 유지 보수하고 있는 웨일던 프로젝트는 스프링 부트 경험이 없던 내가 첫 프로젝트로 진행했던 터라, 크고 작은 버그가 많다. 개발할 때 인지했지만 개발 기간이 부족해서 이슈로만 등록해두고 일단 진행했었다. (CMC라는 it 동아리에서 진행했던 터라 기간 내에 완성해야 했다) 따라서 과거에 내가 시간이 없다는 핑계로 뿌려뒀던 코드들을 하나씩 고치고 있다. 이번 리팩토링 내용은 서버의 예외 처리 및 로그에 관한 내용이다. 대단하거나 어려운 내용은 없지만 삽질했던 경험을 공유하고자 한다. 문제 현재 프로젝트 내에서 예외처리는 Custom Exception을 만들어서 인자로 enum Type의 ExceptionStatus를 넣어주고 있다. 따라서, 기본 구조는 Controller로 요청이 들어온 ..
[SpringBoot] Error - Parameter 0 of constructor in ~ required a bean of type 'java.lang.String' that could not be found.
상황 - FCM 기능을 추가하기 위해서 해당 클래스와 메서드를 구현하던 중, 필요한 변수를 설정 중 - 해당 변수들을 코드 단에 application.yml에서 @Value 어노테이션을 이용해서 주입해주려 했으나 서버를 실행시키면 에러가 발생 에러 *************************** APPLICATION FAILED TO START *************************** Description: Parameter 0 of constructor in ~ required a bean of type 'java.lang.String' that could not be found. Action: Consider defining a bean of type 'java.lang.String' in..
[SpringBoot] Error - java.net.SocketTimeoutException at PlainSocketImpl
상황 - CI 작업을 위해서 프로젝트에 github action을 연동하던 중 마주친 에러. - build 중 테스트가 돌아가면서 에러가 나버린다. - 프로젝트의 datasource는 RDS mysql database를 연결해둔 상태였다. 발생한 에러 ApplicationTests > contextLoads() FAILED java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:132 Caused by: org.springframework.beans.factory.BeanCreationException at AbstractAutowireCapableBeanFactory.java:1804 Caused by: javax.p..
[SpringBoot] Error - Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
상황 Spring Initializr을 통해서 MySQL 의존성을 추가한 상태 IndexController를 테스트용으로 만들고, 서버를 run 시켰더니 마주친 오류 Description: Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. Reason: Failed to determine a suitable driver class Action: Consider the following: If you want an embedded database (H2, HSQL or Derby), please put it on the classpath. If you ..
스프링 - 의존 관계 주입 방법 4가지
이제까지 컴포넌트 스캔을 통해서 설정 파일에서 따로 @Bean을 통해서 빈을 등록하지 않고 @Component을 통해 스프링 컨테이너에 등록하는 방법을 정리해보았다. 클래스에 @Component를 붙이고, 의존 관계 또한 해당 클래스 내에서 정의해줘야 하는데 이번엔 이 의존 관계 주입 방법에서 대표적인 4가지를 정리해보려 한다. 1. 생성자 주입 @Service public class AService{ private final ARepository aRepository; @Autowired public AService(ARepository aRepository){ this.aRepository = aRepository; } } - 말 그대로 생성자를 이용한 의존 관계 주입 방법이다. - 스프링이 컴포넌트..