Spring/Spring-detail47 JPA Auditing 적용 Auditing 이란, 감시하다 라는 뜻을 가지고 있다. 각 데이터 마다, 누가, 언제 데이터를 생성했고 변경했는지 감시한다는 의미로 사용한다. 엔티티 클래스에는 공통적으로 들어가 있는 필드는 생성일자와 변경일자 같은 것이 있다. 반복적으로 넣어주는 일을 줄이기 위해서 Auditing 기능을 사용한다. @EnableJpaAuditing 추가 @SpringBootApplication @EnableJpaAuditing public class AdvancedJpaApplication { public static void main(String[] args) { SpringApplication.run(AdvancedJpaApplication.class, args); } } BaseEntity 만들기 - 코드의 중.. 2022. 9. 13. JUnit 테스트의 생명주기를 알아보자 JUnit의 생명주기를 확인해본다. @Test : 테스트 코드를 포함한 메서드를 정의한다. @BeforeAll : 테스트를 시작하기 전에 호출되는 메서드를 정의한다. @BeforeEach : 각 테스트 메서드가 실행되기 전에 동작하는 메서드를 정의한다. @AfterAll : 테스트를 종료하면서 호출되는 메서드를 정의한다. @AfterEach : 각 테스트 메서드가 종료되면서 호출되는 메서드를 정의한다. 아래 전체 코드를 통해 확인해보자. public class TestLifeCycle { @BeforeAll static void beforeAll() { System.out.println("## BeforeAll Annotation 호출 ##"); System.out.println(); } @AfterAl.. 2022. 9. 11. application.yml 에서 JPA 설정하기 스프링부트 및 JPA 를 연습할 때, 프로젝트를 생성하면서 항상 구글에 찾아서 작성하지 않으려고, 따로 글을 작성했다. yml 에 적용할 때는 띄어쓰기가 중요하고 , properties 랑 적용코드가 조금 다르다. application.yml 설정 // mysql 연결 및 jpa 설정 spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver // ? 앞에 shop 은 DB 이름을 작성 url: jdbc:mysql://localhost:3306/shop?serverTimezone=Asia/Seoul username: root password: 1234 jpa: properties: hibernate: show_sql: true // DB 에 날리는 .. 2022. 9. 11. Spring Security H2 DB 접근하기 스프링 시큐리티를 이용하면 H2 데이터베이스에 바로 접근할 수 없다. MySQL 등을 처음부터 사용할 수 있지만, 개발의 편의성을 고려해서 H2 DB 를 사용한다면 설정방법을 알아야 하기때문에, 간단히 정리했다. 아래 내용으로 된 블로그를 많이봤는데 Deprecated 되어서 더이상 사용할 수 없었다. new XFrameOptionsHeaderWriter( new WhiteListedAllowFromStrategy(Arrays.asList("localhost")) // 여기! ) 1. h2-console 로 시작하는 접근을 모두 허용 2. csrf 비활성화 3. http 헤더 frameOptions 비활성화 참고 https://malwareanalysis.tistory.com/160 스프링부트 h2인메모.. 2022. 9. 2. ResponseEntity<T> 정리가 잘 되어있는 블로그 참고 https://a1010100z.tistory.com/106 [Spring] ResponseEntity는 왜 쓰는 것이며 어떻게 쓰는걸까? 기존 내 개인 프로젝트 코드의 RestController 반환값은 모두 Object 타입이었다. 하지만, 일반적인 API는 반환하는 리소스에 Value만 있지 않다는 것을 모두 알고 있을 것이다. 당장 생각나는 것으로는 a1010100z.tistory.com 내코드 예시 @PostMapping("/users") public ResponseEntity createUser(@RequestBody User user) { User savedUser = userDaoService.save(user); return ResponseEntity.st.. 2022. 8. 31. assertThrows 예외 테스트 예외 처리 테스트 관련 메서드 assertThrows Assertions 에는 2가지가 있다. 해당 메서드는 junit.jupiter 에 내장되어있다. 사용방법은 아래와 같다. 예외타입을 적어주고 람다식으로 발생조건을 적어주면 된다. 필요 파라조건이 적혀있어서, 모르는건 검색해가면서 작성하면 된다. 나는, 회원가입 중복 테스트할 때 사용했다. 2022. 8. 21. assertThatThrownBy 테스트 Junit5 에서는 예외테스트를 진행할 때 try - catch 보다 해당 메소드를 많이 사용하는 것 같다. 가독성이 좋아서 그런것 같기도하다. 아주 간단한 예제이지만, 혼자 구글링하면서 적용했다는 것에 칭찬하며, 혹시 다음에 까먹을까봐 기록해둔다. JPA 실전 강의에서 나온 entity 서비스이다. 재고가 0 밑으로 떨어지면 NotEnoughStockException 예외를 발생시키면서, "need more stock" 이라는 메세지를 보낸다. assertThatThrownBy 의 문법은 람다를 사용한다. assertThatThrownBy(() -> item.removeStock(11) ) .isInstanceOf(NotEnoughStockException.class) .hasMessage("need .. 2022. 8. 17. 테스트 케이스 설정 방법 - Memory DB 사용하기 테스트 케이스를 위한 설정 테스트는 케이스 격리된 환경에서 실행하고, 끝나면 데이터를 초기화하는 것이 좋다. 그런 면에서 메모리 DB를 사용하는 것이 가장 이상적이다. 추가로 테스트 케이스를 위한 스프링 환경과, 일반적으로 애플리케이션을 실행하는 환경은 보통 다르므로 설정 파일을 다르게 사용하자. 다음과 같이 간단하게 테스트용 설정 파일을 추가하면 된다. 테스트 파일은 원래 기존 application.yml 의 설정에 따라 실행된다.만일, 아래 사진처럼 test 에 따로 만들어준다면 우선순위가 바뀌기 때문에 test 폴더 안의 설정에 따르게 된다. ( DB 기본설정은 메모리DB 이다 ) 2022. 8. 17. @Profile 활용하기 현업에서는 환경을 다양하게 해서 해당 환경에서만 동작하는 빈을 만드는 경우가 있다. @Profile를 활용해서 내가 사용하고 싶은 빈만 사용할 수 있다. 사용방법은 아래와 같다. 어떤 환경에서 동작시키고 싶은 클래스 위에 @Profile 을 붙여준다. 보통 sandbox(테스트환경) / beta(실운영과 가장비슷) / production(실운영) 으로 나뉜다고 한다. 붙여진 프로파일 환경으로 설정하는 방법이다. 환경변수에서는 spring.profiles.active=이름 을 붙여주면된다. 이름에는 @Profile("이름") 에 들어간 명칭과 같은 이름을 붙여주면된다. 2022. 7. 21. 이전 1 2 3 4 5 6 다음