[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..
[Spring] ConfigurationProperties + ConfigurationPropertiesScan
·
JVM/Spring
사전 조건 application.yaml 설정 dependency 설정 spring-boot-configuration-processor annotationProcessor 를 추가해줘야한다. Java 순서 1. ConfigurationProperties 등록 on ConfigClass @Getter @RequiredArgsConstructor @ConfigurationProperties(prefix = "server") public class ServerConfig { private final String port; private final String ip; private final String hostname; } 2. ConfigurationPropertiesScan 등록 on main @Sprin..
[SpringBoot] Naming methods in each layer
·
JVM/Spring
There's no strict stnadard naming convention in SpringBoot, Howevere there's some best practice. Controller Layer The methods in the controller should be named based on the HTTP method. getUser postUser deleteOrder Service Layer Methods in service layer should be descriptive and prefixed with a verb createUser() updateUser() deleteUser() Persistence Layer Methods in persistence layer named data ..