spring
-
[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 인 파라미터를..
-
spring yml/yaml/properties 파일 작동 안됨 오류 해결법spring 2024. 11. 6. 12:06
문제application.yml 파일에 키값을 넣어놓고 .class파일로 가져오려고 했는데 가져오지 못하는 문제가 발생했다. - application.yml / application.yaml 파일api: key: aaaaaaaaaaa - application.properties 파일api.key=aaaaaaaaaaa - 키값을 가져오려는 .java 파일public class ClaudeConfig { @Value("${api.key}") private String secretKey; public ClaudeConfig() { System.out.println(secretKey) }} - 출력 결과null 원인문제 원인은 @Value 애노테이션 때문이었다.@..