본문 바로가기

언어와 프레임워크/Spring5

[Springboot] 개발환경과 테스트환경 각각 다르게 설정하기 (예시 DB) Intellij 2022.01.03, java 8, springboot 2.7.4, gradle 환경에서 작업하였습니다. 개요 spring mvc 환경에서 개발을 하다보면 실제 기능을 위한 작업과 기능을 테스트하기 위한 작업을 구분하여야 할 때가 있습니다. 저의 경우 실제 운영하는데에선 MariaDB가 사용되었고 테스트 환경에서는 In memory DB인 H2 데이터베이스를 사용하였습니다. 저는 두 개발환경을 두 개의 application.yml 파일을 둬서 관리하였습니다. https://unagi-zoso.tistory.com/219 [Spring] Profile을 통해 다양한 application.yml 설정 운용하기 개요 예시 테스트 개요 서비스를 만들다보면 local, develop, produc.. 2023. 3. 3.
[Spring] JUnit5와 생성자 DI 사건 발단 JUnit5 단위테스트 작성 중 기존 스프링 프레임워크에서 DI하듯 private final로 변수를 생성하고 생성자를 통해 오브젝트를 주입 받았습니다. 하지만 DI가 제대로 이뤄지지 않고 NullException만 자꾸 일어나는 것이 였습니다. 해결 방안 디버깅을 통해 어느 위치에서 문제가 있는지 파악하려하였는데 어느 곳에 브레이크 포인터를 설정하여도 브레이크가 잡히지 않았습니다. 갸우뚱하다가 프로세스가 실행하면서 생기는 exception 같으니 DI에서의 문제가 있는건 아닌가? 생각하여 인터넷에서 알아봤습니다. JUnit5환경에서는 기존 Spring에서와는 달리 DI를 @Autowired 어노테이션을 통해서 인식하고 주입이 이뤄진다고 합니다. 그래서 기존 생성자 주입 방식에서 @Autowi.. 2022. 9. 30.
[Spring] Spring Security와 h2-console 403 에러 개요 코드 개요 Spring Security와 h2-console 사용 시 SecurityConfig에서 따로 설정을 안하면 h2-console로 접속하려는 순간 403 에러가 나타납니다. 코드 http.antMatcher("/**") .authorizeRequests() .antMatchers("/", "/me", "/h2-console/**", "/login/**", "/js/**", "/css/**", "/image/**", "/fonts/**", "/favicon.ico").permitAll() .and().headers().frameOptions().sameOrigin() .and().csrf().disable() ; 긴 글 읽어주셔서 감사합니다. 부족한 점이 있다면 부디 알려주시면 감사하겠습니다. 2022. 9. 30.
[Spring] Profile을 통해 다양한 application.yml 설정 운용하기 개요 예시 테스트 개요 서비스를 만들다보면 local, develop, product 등 서비스가 실행되는 환경이 다양할 수 있습니다. 저같은 경우에는 서비스를 구축하며 develop 환경에서 사용될 MariaDB와 test 환경에서 사용될 H2DB를 따로 설정하기 위해 Profile을 이용했습니다. 예시 // application.yml spring: profiles: active: local application.yml에서는 사용할 profile을 정해줍니다. 이 때 active에 들어갈 값은 위 사진을 예로 application-값.yml의 값입니다. application-dev를 사용하려면 dev를 application-local을 사용하려면 local을 적어주시면 됩니다. // applicati.. 2022. 9. 30.
[Spring] Security WebSecurityConfigurerAdapter Deprecated 대체하기 사건 발단 spring-boot-starter-security:2.7.3을 사용하며 기존에 사용하던 WebSecurityConfiguerAdapter가 Deprecated되있는 것을 확인하였습니다. 이를 대체하기 위한 방법을 알아보며 공식문서를 참조하였습니다. Spring Security 5.7.1 부터 최신버전, Spring Boot 2.7.0 부터 최신버전부터 Deprecated가 되었습니다. SecurityFilterChain을 Bean으로 등록해 사용하라는 내용입니다. 이러한 변화에 대한 이유로는 스프링 프레임워크에서 사용자로 하여금 Component기반의 Security configuration을 장려하기 위함이라 합니다. WebSecurityConfigurerAdapter를 상속하여 HttpS.. 2022. 9. 9.