본문 바로가기

STUDY/Spring

(79)
Spring Boot | Querydsl 추가 (Gradle 7.x) 📌참고!!!! [gradle] 그레이들 Annotation processor 와 Querydsl Querydsl은 JPQL 빌더 오픈소스 프레임워크다. 일단 Querydsl을 사용하기 위해 라이브러리를 추가해야 한다. SpringDataJPA도 추가되어 있어야 한다. dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-web' // Querydsl 추가 시작 implementation 'com.querydsl:querydsl-jpa' } 이렇게만 하면 Q..
Spring Boot | Spring Security Debug 콘솔 출력하기 1. @EnableWebSecurity에서 설정하기 @EnableWebSecurity어노테이션에 debug설정을 true로 설정한다. (기본은 false) @Configuration @EnableWebSecurity(debug = true) public class SecurityConfig extends WebSecurityConfigurerAdapter { } debug 콘솔 출력을 활성화 한 후 애플리케이션을 실행해보면, 아래와 같이 콘솔이 출력된다. 민감한 정보를 포함하고 있으므로 실제로 배포할 때는 활성화 하지 말라는 내용.. 이렇게 코드상으로 설정해두면, 빌드할 때 마다 코드를 수정해야 하므로 번거로워지기 때문에 아래의 두 번째 방법을 사용하는 것이 좋다. 2. 설정파일 이용하기 (추천) 설정파..
Spring Boot | spring-session-jdbc 테이블 생성이 안 될 때.. Gradle 7.0.2 Java 11 Spring Boot 2.5.0 H2 Database build.gradle spring-session-jdbc는 세션을 데이터베이스에 저장하도록 한다. implementation 'org.springframework.session:spring-session-jdbc' application.yml spring.session.stor-type= jdbc로 설정해주어야 한다. 이렇게 하면 프로젝트를 실행할 때 SPRING_SESSION테이블과 SPRING_SESSION_ATTRIBUTES테이블이 자동으로 생성된다. spring: session: store-type: jdbc 하지만..? 아무리해도 자동으로 생성되지 않았음.. spring.session.jdbc.initi..
Spring Boot | OAuth2 Google 로그인 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 책을 참고하여 작성하였습니다. java11 Gradle 7.0.2 Spring Boot 2.5.0 build.gradle spring-boot-starter-oauth2-client를 사용한다. implementation 'org.springframework.boot:spring-boot-starter-oauth2-client' 구글에 프로젝트 등록 https://console.cloud.google.com/ 로 접속 후, 새 프로젝트를 생성한다. (이미 프로젝트 생성한 상태라 저렇게 되어있음.. 저 부분 클릭하면 모달창이 생성된다) 프로젝트 이름은 자유롭게 설정 API 및 서비스 > 사용자 인증 정보 (OAuth 동의 화면 부터 만들라고 할 것임..) 앱..
Spring Boot | REST Docs 적용하기 ( + build failed 해결.. ) Spring REST Docs? Asciidoctor를 사용해 RESTful 서비스에 대한 문서를 생성하도록 돕는다. Swagger vs REST Docs Swagger UI Spring REST Docs 실제 코드에 애노테이션을 추가하여 문서가 작성되는 방식 -> 가독성 측면에서 좋지 않을 수 있음 -> 하지만 적용하는 방법이 쉬움! 테스트 코드로 문서를 작성하는 방식 (테스트가 성공해야만 작성됨) -> 테스트 코드를 반드시 작성해야 함.. -> 약간의 진입 장벽이 있음 API를 테스트 해볼 수 있음! API 테스트 불가능 진짜 "문서" Swagger도 사용해봤지만, REST Docs가 더 좋다고 느꼈다.. 일단 문서 생긴게 더 마음에 들기도 하고...^^ REST Docs 적용하기! 우아한형제들 기술..
JUnit5 | multipart/formdata 전송 테스트 ( MockMultipartFile, @RequsetPart ) MockMultipartFile로 파일 업로드 POST 요청 테스트를 해보자! 1. TestClass 작성 보통 테스트할 클래스 명에 Test를 붙여 생성한다. @SpringBootTest를 이용한 통합테스트를 진행할 것임 @AutoConfigureMockMvc를 이용해 MockMvc 자동 설정 스프링 프로필을 설정해놓았다면, @ActiveProfiles로 사용하고자 하는 프로필을 꼭 명시할 것 @BeforeEach로 테스트 메서드 요청 전에 access_token을 발급 받아 초기화 함 -> OAuth2를 사용하는 경우에만 해당 @Slf4j @SpringBootTest @AutoConfigureMockMvc @ActiveProfiles(profiles = "local") public class Imag..
JUnit5 | Test LifeCycle JUnit5은 네 가지의 테스트 라이프사이클 애노테이션을 제공한다. @BeforeAll JUnit4의 @BeforeClass를 대신하는 애노테이션이다. 모든 테스트가 실행되기 이전에 @BeforeAll이 명시된 메서드가 실행된다. -> 테스트가 실행되기 전에 딱 한 번 실행 반드시 static 메서드여야 한다. @BeforeEach JUnit4의 @Before를 대신한다. @Test애노테이션이 명시된 각각의 테스트 메서드 이전에 실행된다. static 메서드일 수 없다. @AfterAll JUnit4의 @AfterClass를 대신한다. 모든 테스트들이 실행된 이후에 실행된다. -> 테스트가 완전히 종료된 후 딱 한 번 실행 반드시 static 메서드여야 한다. @AfterEach JUnit4의 @Afte..
JUnit5 | Controller 테스트 하기 ( + OAuth2 ) 1. TestRestTemplate 이용하기 TestRestTemplate을 이용하기 위해서는 @SpringBootTest어노테이션과 webEnvironment설정이 필요하다. @SpringBootTest의 webEnvironment속성 설정을 RANDOM_PORT로 설정 @TestConstructor를 명시하여 생성자로 의존관계 주입 @ActiveProfiles에 사용할 프로필을 설정 (프로필 설정이 되어있지 않다면 생략) @Slf4j @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @TestConstructor(autowireMode = TestConstructor.AutowireMode.ALL) @ActivePr..