본문 바로가기

Spring Boot

(26)
Spring Boot Reactive Redis Transaction Spring Boot Reactive Redis를 사용할 때 Transaction 동작시키는 코드에요. RedisConfiguration.java @Configuration @RequiredArgsConstructor public class CouponRedisConfiguration { @Value("${spring.redis.host}") private String host; @Value("${spring.redis.port}") private int port; @Bean public RedisClient redisClient() { return RedisClient.create(RedisURI.builder() .withHost(this.host) .withPort(this.port) .build(..
Spring Boot logback.xml 설정 logback.xml 파일을 사용해서 로깅 설정을 해볼게요. 스프링부트에서는 application.yml으로 로깅 설정이 가능하지만 할 수 있는 기능이 많지는 않아요. 그래서 실제 어느 정도 규모 있는 서비스를 운영하기 위해선 xml 파일로 설정해두는 것이 좋아요. src/main/resources 경로 밑에 logback-spring.xml 파일을 만들어주세요. 그러면 자동으로 애플리케이션을 실행할 때 파일을 읽어 설정값을 적용합니다. logback-spring.xml %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n ${filePath}/app.log ${filePath}/app.%d{yyyy-MM-dd}.%i.gz 1GB 10 %d{HH:mm:ss..
Spring Boot Logging 간단 설정 (application.yml) 아주 간단한 로깅 남기는 법이에요. 어느정도 규모가 작은 서비스는 application.yml 설정만으로도 커버할 수 있어요. 규모가 점점 커지면 logback.xml 파일로 세부적으로 설정해서 관리할 필요가 있어요. application.yml logging: file: path: /Users/hong/Logs/kotlin-spring max-size: 500MB max-history: 10 level: root: info me.hong.kotlinspring: debug 주의할 점은 logging.file.name 을 설정하면 프로젝트 루트 경로에 파일이 생기고 logging.file.path는 먹지 않아요. 이유는 자세히는 안 찾아봤어요.. 버그인지 의도한건지.. logging.file.max-si..
JPA enum으로 컬럼 관리 DB에 특정 데이터만 들어가야 하는 경우가 있어요. 성별: 남자/여자 삭제플래그: YES/NO 상태값: 준비/진행/완료 등등 비즈니스에 따라 여러가지 경우가 있는데요. 데이터를 관리하기 용이하도록 enum을 활용해볼게요. 예시는 쉽게 남자/여자 데이터로 해볼게요. 우선 enum 클래스를 하나 만들어주세요. description 필드는 굳이 안넣어도 됩니다. Gender.java (enum) @Getter @AllArgsConstructor public enum Gender { MALE("남자"), FEMALE("여자"); private String description; } User.java (Entity) @Entity @Getter @Setter public class User { @Id @Gener..
Spring Boot 백그라운드 jar 중지 (kill pid) 백그라운드로 실행 중인 jar 프로세스를 종료할 때 직접 PID를 찾아서 kill합니다. ps -ef | grep jar kill 15235 관리가 용이하도록 애플리케이션을 시작할 때 pid 파일을 생성하고, 중지할 때는 pid 파일을 참고하도록 작업해볼게요. application.yml spring: pid: file: boot.pid Application.java @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication application = new SpringApplication(DemoApplication.class); application.addLis..
Spring Boot Banner.txt (프로젝트 타이틀 콘솔 출력) Spring Boot 프로젝트를 생성하고 실행하면 아래 사진과 같은 배너를 확인할 수 있어요. 이 배너를 바꿔보려고 해요. src/main/resources 경로에 banner.txt 파일을 생성해주고 내용을 입력해주세요. banner.txt 아래 내용을 그대로 복사하여 banner.txt에 붙여넣어보세요. ,--. ,--. ,--. ,--. ,--. ,--. ,--. ,--. | '--' | ,---. | | | | ,---. | | | | ,---. ,--.--. | | ,-| | | .--. | | .-. : | | | | | .-. | | |.'.| | | .-. | | .--' | | ' .-. | | | | | \ --. | | | | ' '-' ' | ,'. | ' '-' ' | | | | ..
Spring Boot 메일 발송 (gmail, naver, daum, nate) 스프링 부트 환경에서 메일을 발송해볼게요. 관리자 계정으로 서버의 상태를 전송한다던가 이메일 인증 메일을 보낸다던가할 때 지금 포스팅한 내용대로 적용하실 수 있을 것 같네요. 준비사항으로는 본인의 gmail, naver, daum, nate 계정 중 하나 있어야 아래 과정을 따라하실 수 있어요. pom.xml org.springframework.boot spring-boot-starter-mail bulid.gradle implementation 'org.springframework.boot:spring-boot-starter-mail' GMAIL 더보기 메일 발송을 구현하기 전에 해야할 일이 있어요. SMTP를 사용할 수 있도록 허용해야 해요. 브라우저에서 메일 발송자가 될 구글 계정에 접속하시고 아래..
Spring Boot JUnit 5 MockMvc Test 스프링 부트에서 테스트 코드를 작성해볼거에요. 굉장히 많은 방법들이 있어요. 그 중에 가장 기본적인 방법으로 알려져있는 JUnit Framework를 사용해보겠습니다. 아마 대부분 스프링 부트로 개발을 하고 있다면 개발한 Controller를 테스트하고 싶을거에요. Controller를 테스트하는 방법 역시 여러가지가 있지만 그 중에 기본으로 알려진 MockMvc를 사용하겠습니다. AbstractControllerTest src/test/java 소스 폴더 밑에 패키지를 만들어서 넣어주면 됩니다. 테스트할 때 필요한 공통 설정 파일이구요. 설정하는 방법은 대표적으로 두 가지에요. AutoConfiguration Customizing AutoConfiguration 아주 간단하게 테스트할 때는 아래와 같이..