목록Development/Spring & SpringBoot (22)
컴공생의 다이어리
@Profile 빈이나 컴포넌트에 프로필을 구분하여 빈을 로드하고 싶은 경우 @Profile을 활용하면 된다. 아래와 같이 @Profile을 통해 프로필(profile)이 active될 때 어떤 빈 혹은 컴포넌트를 등록할지 결정할 수 있다. @Configuration @Profile("prod") public class ProdConfig{ @Bean public DataSource dataSource(){ // ... 생략 } } @Configuration @Profile("dev") public class DevConfig{ @Bean public DataSource dataSource(){ // ... 생략 } } 프로필 이름 앞에 NOT 연산자인 !를 접두사로 붙여 프로필에서 제외시킬 수 있다. ..
[스프링 부트, Spring Boot] 테스트 실행환경 분리 이번 글에서는 테스트 실행환경 분리를 위한 방법에 대해 정리하고자 한다. 제일 먼저 application.yml(환경변수) 파일에 테스트 환경을 추가해준다. # application.yml spring: config.activate.on-profile: default --- spring: config.activate.on-profile: test 이때, 테스트 환경에 대한 환경 변수 파일을 test 하위에 분리해주는 방법도 있다. 환경 변수 파일을 test 하위에 만들어주면 자동으로 main 하위의 환경 변수 파일보다 우선적으로 적용된다. 그리고 분리한 테스트 환경을 적용시켜주기 위해 테스트 클래스에 @ActiveProfiles를 아래와 같이 ..
[Spring Boot] 환경변수 파일(application.yml) local, dev, prod 환경 분리 스프링 부트에서 로컬(local), 개발(dev), 운영(prod) 등의 환경을 분리해야 하는 경우 profile을 활용해 설정 정보를 분리할 수 있다. profile은 spring.config.activate.on-profile 을 통해서 profile 이름을 작성을 적고 하위에 해당 profile에 대한 설정을 작성해주면 된다. profile 환경 정보를 분리하는 방법으로는 아래와 같이 크게 2가지가 있다. 하나의 파일 안에서 환경 분리 yml 파일 분리 하나의 파일 안에서 환경 분리 하나의 파일 안에서 --- 를 넣어서 profile을 분리한다. # profile 정보가 없는 맨 위 부분은..
[Spring Boot] 슬랙(Slack) webhook으로 메세지 보내기 오늘은 Spring Boot 프로젝트에서 슬랙에 메시지를 보내는 방법에 대해 정리하고자 한다. 본격적으로 들어가기 전 아래의 조건이 준비되어 있다는 가정을 하고 설명을 하려고 한다. 슬랙이 설치되어 있고 하나의 워크스페이스에 들어가 있다. 스프링부트 프로젝트의 기본 설정이 되어 있다. 슬랙 설정 1. 슬랙 앱에서 webhook을 검색한 후 Incoming WebHooks를 추가한다. 2. 추가 버튼 클릭 후 어떤 채널에 포스트할지 선택을 한 후 수신 웹후크 통합 앱 추가 버튼을 클릭한다. 3. 2번에서 버튼 클릭 후 아래와 같은 페이지가 나오는데 설정 지침의 웹후크 URL을 꼭 어디에 복사해둬야 한다. 해당 URL이 메시지를 보내..
[MyBatis] parameterType, resultType에 내부 클래스(inner class) 사용 MyBatis의 paramterType과 resultType에서 내부 클래스를 사용하는 방법에 대해 정리하고자 한다. 우선 paramterType과 resultType에서 내부 클래스를 사용하기 위해서는 아래와 같이 내부 클래스가 static으로 선언되어 있어야 한다. public class Outer { public static class InnerA { // ... } public static class InnerB { // ... } } 그리고 MyBatis에서 사용시 아래와 같이 $를 사용해서 내부 클래스를 타입으로 설정하면 된다. 점(.)은 경로를 타고 갈 때 사용하고 $는 inner cl..
Spring Boot 배너 커스텀 Sprint Boot 애플리케이션을 구동하면 아래와 같은 시작 배너가 뜬다. 이 시작 배너를 내가 원하는 것으로 변경하는 방법에 대해 정리하고자 한다. 직접 그려서 만드는 방법도 있지만 아래 사이트에서 간편하게 배너를 생성할 수 있다. 본인이 배너를 직접 만들려고 하는 경우는 아래로 스크롤 해서 적용하는 방법부터 보면 된다. Text to ASCII Art Generator (TAAG) patorjk.com 위 사이트를 들어가서 배너에 사용할 텍스트를 입력하고 Font와 문자 크기 등을 아래처럼 자신의 상황에 맞게 설정해주고 생성한 배너 텍스트를 복사한다. 배너 적용하는 방법 Spring Boot 프로젝트 폴더의 src/main/resources 경로 아래에 banner..
Spring @RequiredArgsConstructor 어노테이션 의존성을 주입해주기 위해서 생성자(Constructor), Setter, Field 타입의 방식을 사용해야 했다. 하지만 lombok(롬복)의 @RequiredArgsConstructor 어노테이션을 사용하면 간단한 방법으로 생성자 주입을 해줄 수 있다. @RequiredArgsConstructor는 final 혹은 @NotNull이 붙은 필드의 생성자를 자동으로 만들어준다. 이를 통해 새로운 필드를 추가할 때 다시 생성자를 만들거나 하는 등의 번거로움을 없앨 수 있다. 하지만 자동적으로 생성자가 만들어지기 때문에 내가 예상하지 못한 결과나 오류가 발생할 수 있기 때문에 그런 점도 염두해둬야 한다. 아래는 생성자 주입 방법의 차이를 보여..
Spring Boot 시작 배너 없애기 Sprint Boot 애플리케이션을 구동하면 아래와 같은 시작 배너가 뜬다. 이 시작 배너를 없애는 방법이 몇가지 있는데 이에 대해 정리하고자 한다. 방법1) application.properties 혹은 application.yml 설정 application.properties 혹은 application.yml에 아래와 같은 설정을 넣어 배너를 없앨 수 있다. # application.properties spring.main.banner-mode=off # application.yml spring: main: banner-mode: "off" 방법2) Customizing Spring Applicatoin SpringApplication을 커스터마이징해서도 배너를..
JPA Auditing Spring Data Jpa에서는 AuditingListener를 제공해 특정한 이벤트에 대해 자동으로 반응하여 등록일, 수정일, 등록자, 수정자와 같은 데이터를 입력해준다. Entity에 대해서 생성된 시간과 업데이트된 시간을 추적하는 것은 매우 중요하지만 이를 매번 사용자가 데이터를 업데이트할 때마다 시간 값을 변경하는 것은 귀찮고 어쩌면 실수로 인해서 놓칠 수도 있다. JPA의 Auditing 기능을 사용해 이러한 점을 해결해줄 수 있다. Auditing 활성화 Auditing 기능을 활성화하기 위해서는 Application에 @EnableJpaAuditing 어노테이션을 추가해줘야 한다. @EnableJpaAuditing// ← 이거 @SpringBootApplication..
Spring Boot 서버 포트(port) 변경 스프링 부트에서 서버의 포트를 변경하고 싶다면 스프링 부트의 설정 파일인, application.properties 혹은 application.yml에 설정을 추가하면 된다. (참고 : 스프링 부트의 기본 서버 포트는 8080) application.properties server.port = {원하는 포트 번호} # example server.port = 8000 application.yml server: port: {원하는 포트 번호} # example server: port: 8000 https://gocoder.tistory.com/2432 Spring Boot - 서버 포트 변경하기 / application.properties 안녕하세요. 고코더 ..