자바/스프링
-
Plain jar vs Executable jar(feat. plain jar 생성 방지)자바/스프링 2021. 11. 8. 23:38
스프링 부트 gradle 플러그인 2.5 버전부터 gradle 빌드 시 JAR 파일이 2개 생성된다. 별도의 설정을 하지 않았을 때 하나는 "프로젝트 이름-버전.jar", 다른 하나는 "프로젝트 이름-버전-plain.jar"이라는 이름을 가진다. Plain Archive "-plain"이 붙은 jar 파일을 "plain archive"라고 한다. (여기서 archive는 jar이든 war이든 빌드 결과물을 의미한다.) plain archive는 gradle의 "jar" task로 생성된다. plain archive는 어플리케이션 실행에 필요한 모든 의존성을 포함하지 않고, 작성된 소스코드의 클래스 파일과 리소스 파일만 포함한다. 이렇게 생성된 jar 파일을 "plain jar", "standard jar..
-
Spring Data JPA 페이징과 정렬자바/스프링 2021. 10. 12. 23:31
Repository 인터페이스 작성 시 JpaRepository가 아니라 PagingAndSortingRepository를 상속하게 하면, Spring Data JPA에서 제공하는 페이징, 정렬 기능을 이용할 수 있다. public interface UserRepository extends PagingAndSortingRepository { ... } PagingAndSortingRepository를 상속하면 findAll(Pageable pageable)이나 findAll(Sort sort)과 같이 Pageable과 Sort 클래스를 파라미터로 받는 메서드를 명세할 수 있다. 기본적으로 제공되는 findAll(Pageable pageable)은 Page 객체를 리턴하지만, 커스텀 메서드를 통해 리턴 타..
-
Spring Data JPA DTO 사용 시 매핑 에러가 발생할 때(org.springframework.data.mapping.PropertyReferenceException: No property ...)자바/스프링 2021. 10. 8. 22:33
Entity가 아닌 DTO를 리턴하는 커스텀 Repository 메서드를 작성할 때, 메서드 이름에 "By 키워드가 없는 경우" 아래와 같은 매핑 에러가 발생한다. org.springframework.data.mapping.PropertyReferenceException: No property ... found for type Entity 클래스 이름! 즉, 조건문 없이 DTO List를 리턴하는 커스텀 findAll 메서드를 작성할 때도 메서드 이름 마지막에 By 키워드를 넣어야 한다. public interface UserRepository extends JpaRepository { List findUserNameListBy(); } By 키워드는 Entity의 일부 데이터를 조회하는 등의 파생쿼리를..
-
스프링부트 H2 데이터베이스 설정 방법자바/스프링 2021. 10. 4. 14:51
1. build.gradle에 아래와 같이 의존성을 추가한다. # build.gradle ... dependencies { ... runtimeOnly 'com.h2database:h2' ... } ... maven의 경우 아래와 같이 의존성을 추가한다. # pom.xml ... com.h2database h2 runtime ... 2. PropertySource(application.properties 등)에 아래와 같이 설정을 추가한다. # application.properties ... spring.datasource.url=jdbc:h2:mem:test spring.datasource.username=user spring.datasource.password= spring.datasource.dri..
-
스프링부트 profile 설정 방법자바/스프링 2021. 10. 3. 22:37
Spring Profiles는 환경에 따라 서로 다른 어플리케이션 설정을 사용할 수 있도록 하는 기능이다. @Component, @Configuration, @ConfigurationProperties 어노테이션이 사용된 스프링 빈은 @Profile 어노테이션을 추가하여 특정 profile에서만 로드되도록 할 수 있다. @Configuration(proxyBeanMethods = false) @Profile("production") public class ProductionConfiguration { ... } 또한 "application.properties" 등의 설정 데이터에서 활성화할 profile을 지정할 수 있다. spring.profiles.active=dev,test 활성화 할 profile..