Server/Spring
-
[Spring] Multi Module에서 implementation으로 참조 못하는 에러 해결하기Server/Spring 2022. 11. 27. 18:06
Multi Module JPA Cannot Access Error 해결하기 이번 글은 Multi-Module을 사용했을 때 반드시 발생하는 에러는 아니고 필자처럼 사용했을 때 에러가 발생할 수 있는 상황이다. Cannot access 'org.springframework.data.repository.Repository' which is a supertype of 'org.springframework.data.repository.CrudRepository'. Check your module classpath for missing or conflicting dependencies Multi Module로 진행할 때 JPA에서 제공해주는 findById 메소드를 사용하려는데 위와 같은 에러가 발생했다. 또 에..
-
[Spring] 멀티 모듈에서 모듈별 yml 파일 관리하는 법Server/Spring 2022. 10. 4. 00:18
Multi module에서 yml 파일 관리하는 법 이번 글에서는 Multi-Module을 사용할 때 모듈 별 yml 파일 관리하는 법에 대해서 정리해보려 합니다. api 모듈 application.yml domain 모듈 application.yml 만약에 위와 같이 2개의 모듈이 있을 때, 각 모듈마다 application.yml을 가지고 있을 것입니다. 그런데 지금까지 Multi-Module로 프로젝트를 할 때는 모듈별로 yml 파일을 분리하지 않고 api 모듈 하나에 모든 설정들을 다 넣었습니다. yml이 잘 분리가 되었다면 api 모듈의 yml에서는 api와 관련된 설정(ex: Swagger)들이 있을 것이고 domain 모듈의 yml에는 대표적으로 DB 접근 정보 및 JPA 설정들이 존재할 것..
-
[Spring] Security WebSecurityConfigurerAdapter Deprecated 해결하기Server/Spring 2022. 6. 29. 00:06
WebSecurityConfigurerAdapter Deprecated 해결하기 최근에 Spring Security를 설정해보려고 WebSecurityConfigurerAdapter를 사용하려 보니 Deprecated가 되어 있었는데요. @RequiredArgsConstructor @EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter { private final ObjectMapper objectMapper; private final JwtAuthenticationFilter jwtAuthenticationFilter; @Override public void configure(WebSecurity web..
-
[Spring] Multi-Module에서 Domain 모듈 테스트 실행하는 법Server/Spring 2022. 6. 23. 01:21
Multi Module Domain 모듈에서 테스트 코드 실행하는 법 위와 같이 main 클래스를 가지는 api 모듈과 domain 모듈로 2개가 분리되어 있습니다. api 모듈에서 domain 모듈을 사용할 때 위와 같이 참조해서 사용하는데요. 즉, api 모듈에서 Domain 모듈을 import해서 사용한다고 생각하면 됩니다. Domain 모듈에서 테스트 코드를 실행해보자. 그러면 이제 Domain 모듈에서 통합 테스트 코드를 간단하게 작성하여 실행해보면 위와 같은 아리송한 에러 메세지를 볼 수 있습니다. 에러가 발생하는 이유를 생각해보면 Domain 모듈에서 통합 테스트 코드를 작성한다면 @SpringBootTest 어노테이션을 사용해서 진행할 것인데요. @SpringBootTest 어노테이션은 S..
-
[JPA] @OneToOne 관계에서 N + 1 발생하는 이유가 무엇일까?Server/Spring 2022. 6. 4. 00:38
@OneToOne 관계에서 N + 1이 발생하는 이유가 무엇일까? 이번 글에서는 @OneToOne 관계에서 N + 1 문제가 발생하는 원인이 무엇인지 해결하기 위해서는 어떤 대안들이 있는지 정리해보겠습니다. OneToOne 관계의 예시를 들기 위해서 File - Thumbnail_Image로 예시를 들어 정리해보겠습니다. 하나의 File에는 Thumbnail_Image 하나만 존재할 수 있는 상황입니다. 그리고 File이 생성된 후에 Thumbnail Image가 생성될 수 있습니다.(File이 없다면 Thumbnail_Image는 존재할 수 없습니다.) 위와 같은 조건이 있기 때문에 File - Thumbnail_Image 사이는 @OneToOne 관계입니다. @OneToOne 관계는 어떤 테이블에서 ..
-
[Spring] Spring Security, React를 사용하면서 CORS 허용하는 방법Server/Spring 2021. 12. 23. 20:26
Spring에서 CORS 해결하는 법 이번 글에서는 개인적인 프로젝트를 하면서 겪었던 SOP 문제를 CORS를 허용해주면서 해결했던 과정에 대해서 공유해보려 합니다. (이 글에서는 CORS가 무엇인지에 대해서는 자세히 다루지 않겠습니다.) 참고로 프로젝트에서 백엔드는 Spring Boot, 프론트엔드는 React를 사용하였습니다. CORS란 무엇일까? CORS가 무엇인지 간단하게 알아보겠습니다. CORS(Cross-Origin Resource Sharing)는 교차 출처 리소스 공유라고 합니다. 여기서 교차 출처라고 하는 것은 다른 출처를 의미하는 것입니다. 즉, 브라우저에서 막고 있기 때문에 CORS를 허용해주어야 접근이 가능합니다. 출처(Origin)은 무엇일까? 위의 보이는 것처럼 도메인에서 Pro..
-
[Spring] AWS EC2에서 Spring Access log, logger log 저장하는 법Server/Spring 2021. 12. 9. 19:57
Spring 실시간 로그, 엑세스 로그 확인하는 법 이번 글에서는 Spring Boot를 AWS EC2 Linux2에 배포했을 때 실시간으로 로그가 찍히는 것을 확인할 수 있는 방법과 엑세스 로그를 확인하는 법에 대해서 공유해보려 합니다. 실시간 로그 보는 방법은 여러가지가 있겠지만 제가 생각하기에 괜찮다 싶은 방법입니다. 이번 글은 이미 jar 파일이 AWS EC2에 있다고 가정하고 작성하겠습니다. 만약 jar를 EC2에 올리는 법이 궁금하시다면 여기 를 보고 오셔도 좋을 거 같습니다. jar 실시간 로그 볼 수 있도록 실행하기 nohup java -jar /home/ec2-user/*.jar --logging.file.path=/home/ec2-user/ --logging.level.org.hiber..
-
[Spring] 스프링에서 의존성 주입을 하는 3가지 방법Server/Spring 2021. 11. 29. 01:32
다양한 의존관계 주입 방법 생성자 주입 수정자 주입(setter 주입) 필드 주입 일반 메소드 주입 주입 방법은 크게 4가지가 있는데 하나씩 알아보겠습니다. 생성자 주입 이름 그대로 생성자를 통해 의존 관계를 주입하는 것입니다. 생성자 1개이면 @Autowired를 생략할 수 있습니다. @Component public class TestComponent { private TestRepository testRepository; // 생성자 주입 public TestComponent(TestRepository testRepository) { this.testRepository = testRepository; } @PostConstruct public void test() { System.out.println..