[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` 값만 지정해줘야한다. 해당 값 미지정시 어느 프로파일로 실행할지 결정..
[Spring] Servlet Container, Servlet
·
JVM/Spring
Servlet 역할 Http Request, Response 에 필요한 필수 기능을 제공하여 개발자가 비즈니스 로직에만 집중하게 해준다. TCP Socket connection 관리 HTTP Request URL, Header, Body 파싱 HTTP Response Header, Body 생성 Servlet 생명 주기 간단하게는 init -> service-> destroy 를 거친다. 1. init() WAS (e.g. Tomcat) 이 띄워질 때 최초로 미리 등록해둔 서블릿을 모두 '싱글톤'으로 생성해둔다. @WebServlet(name = "HelloServlet", urlPatterns = "Hello") public class HelloServlet extends HttpServlet { @O..
[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..