spring
-
GraphQL 장단점, 사용법spring 2025. 7. 19. 17:33
고민..한번의 api 요청으로 10개의 테이블의 쿼리를 날려서 100개 이상의 값을 가져와야 했다.또, 원하는 필드값만 요청하고 싶어도 불필요한 값들도 같이 가져오는 문제가 있었다. 이를 피하기 위해 여러 엔드포인트를 만들어야 했다.이럴 바에는 하나의 엔드포인트를 사용하며 요청 양식을 유연하게 변경 가능한 GraphQL이 더 적합할 것 같았다. GraphQL의 장점1. 네트워크 비용을 줄일 수 있다.클라이언트가 필요한 데이터만을 정확히 요청 가능하여 over fetching(필요 이상의 데이터를 받는 것), under fetching(필요한 데이터를 충분히 받지 못하는것)을 방지한다. 2. 엔드포인트, DTO를 여러개 만들지 않아도 된다.단 하나의 엔드포인트로 모든 요청을 커버할 수 있다. 3. 버전..
-
[Spring] 애플리케이션 이벤트spring 2025. 6. 29. 13:42
이벤트는 컴포넌트 간의 결합도를 감소시키고 도메인 간의 의존성을 감소시켜 재사용성을 높이기 위해 사용한다.스프링에서 이벤트는 도메인 이벤트와 애플리케이션 이벤트로 나뉘는데, 이 중 구현이 쉬운 애플리케이션 이벤트에 대해 알아보겠다.스프링 이벤트 구조는 이벤트 퍼블리셔(Publisher), 이벤트 리스너(Listener), 이벤트 핸들러로 나뉜다. 실행 흐름 1. 퍼블리셔가 이벤트를 발행2. 이벤트를 모든 적합한 리스너에게 이벤트를 전달3. 리스너의 핸들러 메서드가 동기적/비동기적으로 처리 구현하기게시글(Post) 저장시 알림을 보내는 로직을 작성해보려고 한다.이벤트 클래스 정의이벤트 클래스는 이벤트를 구분하는 식별자 역할을 한다. 이를 이용하여 적합한 리스너를 매칭한다.또한 이벤트 핸들러에서 필요한 정보..
-
테스트코드에 별도의 yml 연결하는 법spring 2025. 1. 30. 00:15
실행 코드에 사용하는 yml 파일과 별개인 테스트코드 전용 yml 파일을 만들었을때,테스트코드에 해당 yml 파일을 연결하려면 아래 방법을 적용해야 한다. 일단, 테스트코드용 yml파일은 test.resources 하위 폴더에 넣는다 이제 테스트코드에 어노테이션만 추가하면 된다.이때 추가 방법은 용도에 따라 두가지로 나뉜다. 방법1) application.yml 주입 x, application-test.yml만 주입하는 경우@SpringBootTest(properties=~) 와 @ActiveProfiles 어노테이션을 추가한다.@SpringBootTest(properties = "classpath:application-test.yml")@ActiveProfiles("test")public class..
-
intelliJ에서 .env 파일 적용법spring 2025. 1. 29. 22:38
방법은 3가지가 있으며, 순서대로 시도해보자. 방법1) intelliJ에 내장되어있는 기능 사용하기이 방법은 IntelliJ Community edition 2024.3.2.1 버전 이후부터 지원하며,이하 버전에서는 지원하지 않을 수 있다.또한 Test코드에는 적용할 수 없다는 단점이 존재한다. Test코드의 .env 적용을 원한다면 방법2를 참고하자. 1. 해당 경로로 .env 파일 생성하기2. .env 파일 작성3. Edit Configurations -> 해당 Application 탭 클릭4. Environment variables 의 파일 아이콘 클릭5. .env 파일 추가6. Apply 클릭 방법2) 플러그인 사용하기아래 링크를 통해 플러그인을 다운받는다.https://plugins.je..
-
[spring boot] 도커 사용시 DevTools 적용하기spring 2025. 1. 5. 22:24
도커 기반에서 스프링부트 프로젝트 개발을 하게 되었다.그런데 도커로 빌드 한번 하는데에 3분이 걸렸다.맥 환경에서는 빌드하는데에 이정도로 걸리지 않는데 윈도우 환경에서는 매우 느렸다.수정할때마다 재빌드해야했기 때문에 이 문제를 해결해야 했다. 이를 위해 spring boot에서 지원하는 DevTools을 활용하기로 했다. DevTools란? - 자동 재시작 기능에 대하여도커로 빌드하면 프로젝트에 관련된 모든 파일을 재빌드하기 때문에 시간이 오래걸린다.만약 수정한 리소스 파일만 로드하면 빌드 시간이 대폭 줄게 될것이다. 이런 기능을 지원하는것이 DevTools다.DevTools의 다양한 기능 중 자동 재시작 기능이라는게 있다.이는 프로젝트의 코드를 수정하면 변경 사항을 감지하여 그 부분만 재시작해주는 기능..
-
[spring boot] QueryDSL 세팅하기spring 2025. 1. 3. 08:53
내가 사용한 버전 정보- spring boot 3.4.0- java 21- 사용 툴 : 인텔리제이 세팅하기 1. gradle의 dependencies에 해당 코드를 추가한다.// queryDSL 관련 라이브러리implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jakarta"annotationProcessor "jakarta.annotation:jakarta.annotation-api"annotationProcessor "jakarta.persistence:jakarta.persistence-api" 2. 인텔리제이의 우측 gradle 설정탭에서 "clean"을..
-
[spring boot] 'Parameter 0 of constructor in ~ ', 'Consider defining a bean of type ~' 오류 해결spring 2024. 11. 20. 11:54
목차- 오류내용- 오류 내용 해석- 문제해결 1) jpaRepository에 이상 없는지 점검하기 2) 연결한 데이터베이스에 이상 없는지 점검하기 오류 내용***************************APPLICATION FAILED TO START***************************Description:Parameter 0 of constructor in test.testProject.service.PrincipalDetailsService required a bean of type 'test.testProject.repository.UserRepository' that could not be found.Action:Consider defining a bean of type ..
-
react와 spring boot 간 연동하기 / 통신하기spring 2024. 11. 7. 09:33
프론트엔드인 react와 백엔드인 spring boot를 잇기 위한 설정을 하고자 한다. 목차전송 형식 소개react - proxy 설정 - axios 라이브러리를 사용한 서버통신 - axios의 특징 - axios 라이브러리 사용하기spring boot - Dto 구현 - Controller 구현전송 형식 소개- 전송 형식은 요청과 답변 모두 json 형식으로 진행한다.- react에서 post 요청을 보낼시 url은 "localhost:8080/api/test" 이며, {msg: "body 내용"} 인 body를 포함한다. react에서 get 요청을 보낼시 url은 "localhost:8080/api/test?ID=12345" 이며 ID=12345 인 파라미터를..