Spring

· Spring
영속성 컨텍스트 엔티티 매니저는 엔티티를 저장, 수정, 삭제, 조회하는 등 엔티티와 관련된 모든 일들을 처리한다. 영속성 컨텍스트는 데이터베이스와 코드 사이의 가상의 데이터베이스 역할을 한다. 1. 엔티티 매니저 팩토리와 엔티티 매니저 엔티티 매니저 팩토리는 엔티티 매니저를 만드는 공장이며 스레드 세이프하게 설계되어 여러 스레드가 공유해서 사용하더라도 안전하게 사용할 수 있다. 엔티티 매니저는 보통 트랜잭션을 시작하면서 DB 커넥션 풀에서 DB 커넥션을 획득하며 스프링 프레임워크에서 JPA를 사용한다면 해당 컨테이너가 제공하는 데이터 소스를 사용한다. 2. 영속성 컨텍스트란? 엔티티 매니저를 통해 엔티티를 저장하거나 데이터베이스에서 엔티티를 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관..
· Spring
개요 프로젝트에 대한 테스트를 작성하던 중 List로 반환되는 DTO에 대한 검증에 대한 코드가 길어져 해결할 방법이 있을까 찾아보았다. 기존에 mockMvc.perform()의 체이닝 메소드인 .andExpect를 사용해서 json의 값을 하나하나 비교해주었다. 검증할 DTO가 많아질 경우 다음과 같이 코드가 너무 길어졌다. @Test @DisplayName("read all post test") public void readAllPostTest() throws Exception { PostDTO after1 = PostDTO.entityToDTO(PostEntity.initEntity(post1, UserEntity.builder().email(post1.getEmail()).build())); af..
· Spring
개요 개발하면서 profile을 통해 로컬과 배포 환경에서의 설정을 분리했지만 빌드를 할때마다 프로파일을 변경해줘야하는 것이 불편해서 찾아보게 되었습니다. 찾다보니 .jar를 실행할 때 환경변수로 사용할 프로파일을 결정할 수 있었고 docker를 사용하여 배포를 하고 있었기 때문에 docker의 환경변수로도 사용할 수 있는지 찾아보았고 방법을 정리했습니다. application.yml 설정 # default spring: profiles: active: prod group: "prod" : "prod" "dev" : "dev" jpa: hibernate: ddl-auto: update show-sql: true springboot: jwt: secret: asdlkqwjie120938 server: ss..
· Spring
개요 프로젝트를 진행하던 도중 Spring JPA를 사용해서 데이터베이스 테이블을 일대다 관계를 만들어야 했지만 방법을 몰라 알아보고 만든 것을 작성하겠다. 먼저 Spring JPA는 자바에서 사용하는 객체의 개념과 데이터베이스에서 사용하는 테이블간의 다른 차이점을 해소시켜서 매핑해주는 API이다. 즉, JPA가 하고자하는 방향은 객체지향적인 방법으로 데이터베이스를 만드는 것이다. 따라서 데이터베이스 테이블의 관계도 객체지향적인 개념으로 접근해야 했지만 이해하기가 정말 어려웠다. 연관관계 단방향과 양방향 먼저 JPA에서 테이블의 연관관계를 만들어주는 방법은 단방향과 양방향으로 나뉜다. 단방향 class A{ private B b; } class B{ private int number; } 단방향 : 객체..
· Spring
개요 Spring Boot의 유효성 검증 중 한 방법인 org.hibernate.validator.constraints 사용하면서 유효성 검증에 실패할 때 던져지는 MethodArgumentNotValidException 를 효과적으로 처리할 방법을 찾던 중 발견한 어노테이션 ControllerAdvice 는 컨트롤러에 AOP를 적용시켜주는 어노테이션으로써 부가 기능을 더해줄 수 있다. RestControllerAdvice 는 RestController 와 동일하게 ControllerAdvice + ResponseBody 의 역할을 한다. 즉, 뷰를 렌더링하는 과정 없이 JSON 형태의 응답을 반환한다. 활용 ControllerAdvice를 통해서 예외에 대한 처리 핸들러를 구현하였다. 먼저 유효성 검증..
· Spring
서비스 계층 단위 테스트 서비스 계층의 단위 테스트는 이전 포스트를 참고해주세요. [Spring Boot] Mockito를 사용한 단위 테스트 종속성 제거 원인 서비스 계층의 테스트를 작성하면서 assertJ로 테스트를 작성했다. Service계층은 DAO에 종속되어 메소드를 사용하기 때문에 DAO를 통해서 새로 만들어진 객체를 삭제해주어야 했고 DAO를 통해서 g-db.tistory.com 이번 포스트에서는 MockMvc를 사용하여 컨트롤러 계층의 테스트를 진행하겠다. MockMvc MockMvc는 이름 그대로 Mvc를 목킹해주는 객체이다. Http 요청을 보내 스프링 MVC를 테스트할 수 있다. 기본 설정 @WebMvcTest(AuthController.class) public class AuthCo..
· Spring
원인, 문제 테스트 코드에 대한 공부를 하면서 여러 영상들을 서칭하여 시청했다. 그런데 어떤 영상에서는 Mock 객체에 대한 행위를 정의할 때 when() 메소드를 사용하고 다른 영상에서는 given() 를 사용했다. 그래서 둘의 차이점이 무엇인지 찾아보았다. Mockito Mockito 프레임워크는 개발자가 테스트를 진행할 때 Controller가 의존하는 Service 객체를 실제 Service객체를 대신할 Mock객체로 대체하기 쉽게 해준다. 쉽게 말해서 Controller가 의존하는 Service 때문에 Controller Test에 영향을 주지 않도록 Service 객체의 역할을 수행하는 척 하는 클래스를 대체해줘야한다. 이는 Mockito를 사용하지 않으면 개발자가 직접 Service 클래스와..
· Spring
과정 스프링 부트에 HTTPS(TLS)를 적용시켜주기 위해서 다음과 같은 과정을 거쳐야 한다. 도메인을 발급받는다. CertBot을 통해서 인증서를 발급받는다. PEM 인증서를 PKCS12 형태로 변환한다. Spring Boot에 인증서를 적용한다. 하나하나씩 차근차근 진행해보겠습니다. 1. 도메인을 발급받는다. CertBot을 통해서 인증서를 발급받기 위해서는 ip주소가 아닌 도메인이 필요합니다. 따라서 도메인을 먼저 발급받아야 하는데 도메인은 구매를 하거나 무료로 발급을 받을 수 있습니다. 자신의 ip주소를 토대로 도메인을 생성하는 방식이 있고 nip.io - wildcard DNS for any IP Address nip.io - wildcard DNS for any IP Address Dead s..
창e
'Spring' 카테고리의 글 목록 (2 Page)