[Spring] SpringBoot 수동 빈 등록 테스트
·
JVM/Spring
요구 사항아래와 같은 yaml 설정에 따라수동으로 사용할 빈을 등록하고싶다.app: storage: type: 'local' # [local, s3]type 항목에 따라 아래와 같이 사용할 클래스를 스프링 빈에 등록하고자한다.local -> LocalFileLister, LocalFileRepository's3' -> S3FileLister, S3FileRepositoryJava 로 수동 빈 등록 코드를 작성했다.@Configurationpublic class StorageRepositoryConfiguration { @Bean public FileValidator fileValidator(FiltersConfig filtersConfig) { return filtersConfig.toV..
[Spring] ConfigurationProperties POJOs 설계
·
JVM/Spring
File Storage -> Kafka 로 중복 없이 레코드를 전송하는 라이브러리를 만들고 있다.다음과 같이 Configuration yaml 을 디자인했다고 해보자.storage: type: local, s3, blob # here is deciding which storage is used. paths: - 'df' - 'df.log' filters: - type: Exclude expressions: - '*empty*' - type: Extension expressions: - .ndjson - .csv # So, bean injection is decided here s3: bucket: reg..
[Spring] DataJpa - Query methods, @Query
·
JVM/Spring
Entity class 를 정의하고 CRUD Repository 구현 노가다를 하지 않게해준다.JpaRepository 는 대부분의 공통 메소드를 지원하기 때문이다. JpaRepository 지원 메소드Class Diagram을 보면 JpaRepository 가 얼마나 많은 메소드를 지원하는지 알 수 있다.(List)CrudRepository , PagingAndSortingRepository , QueryByExmampleExecutor 등 여러 인터페이스를 상속받는다. Spring Data Jpa 3.4.0 기준 JpaRepository 가 제공하지 않는 메소드는?다음처럼 username 을 가지고 Member 를 조회하는 기능이 필요하다고 하자.인터페이스에 새로운 메소드를 정의했다.public in..
[Spring] 환경 분리 방법
·
JVM/Spring
환경 분리가 왜 필요한가? 애플리케이션은 로컬, 개발, 운영, 테스트 등 다양한 환경을 지원하고 싶을 수 있다. 각 환경마다 다른 자원, 스팩을 사용하는 일은 생각보다 자주 마주친다. SpringBoot 는 이를 지원하기 위한 매커니즘으로 Profile 을 제공한다. yaml 파일로 환경 분리하기 사전 준비 SpringBoot 앱이 로드되자마자 Yaml 파일을 읽어 로깅하도록 지정했다. 어노테이션은 주석을 참고하자. (1) 하나의 application.yaml 에 때려박기 (2) 환경별 yaml 파일 분리하기 profile 을 환경별로 분리하여 정의하고 `application.yaml` 에서 `spring.profiles.active` 값만 지정해줘야한다. 해당 값 미지정시 어느 프로파일로 실행할지 결정..
[Database] H2 연결 옵션
·
DataBase
🎯 GoalsSpringBoot - H2 DB 간 적절한 연결 방법을 선택할 줄 안다.SpringBoot - H2 DB Automatic mixed 연결을 직접 실행해본다. H2 DB 연결 3가지 모드1. Embedded Mode이름 그대로 JVM App 내에 DB를 '내장'하는 모드다.네트워크 IO가 없기 때문에 가장 빠른 대신 외부 클라이언트로 접근이 불가능하다는 단점이 있다. (심지어 로컬 호스트 내의 다른 앱이라도 불가하다.) 2. Server - Client ModeH2 DB 공식문서에서 추천하는 방식으로 외부에서 접근이 가능하다.대신, TCP/IP 네트워크 IO 로 데이터 통신이 이뤄지기 때문에 Latency 발생이 불가피하다.  It's recommended to use the client..
[Spring] logback-spring.xml
·
JVM/Spring
개요 @Sl4j 로 SpringBoot는 기본 로거를 내장하는데 요녀석으로 로깅 정책, 패턴, 저장 위치를 결정할 수 있다 logback-spring.xml main/resources 에 두면된다. 주석을 참고하자. 본 프로젝트에 갈기면된다. 로그 레벨에 따라 프로젝트 루트에 logs/error.log logs/info.log logs/warn.log 'RollingFileAppender' 클래스를 통해 최대 용량 혹은 보관기간이 지나면 새 파일을 저장한다. [%d{yyyy-MM-dd HH:mm:ss.SSS}:%-3relative][%thread] %-5level %logger{36} - %msg%n [%d{yyyy-MM-dd HH:mm:ss.SSS}:%-3relative][%thread] %-5leve..