목록Spring (19)
잘 정리해보자
에러메시지 : No property findComplete found for type 원인 : 1. 언더스코어 (_)를 이용한 entity생성이나 custom repository 경우 발생. 2. entity의 컬럼명과 custom repository 에서 선언한 인터페이스명이 다른 경우. 저는 후자에 해당되었기 때문에 repository에 선언된 명을 변경했습니다. Todo.java (entity) private Boolean completeFlag; repository List findByIsComplete(Boolean flag); entity에는 completeFlag로 선언하고, repository에서는 isComplete를 호출하고 있었다.,,, 해결 : repository 변경 List fi..
spring batch에서 엑셀파일을 저장하는 기능을 구현하는데, spring boot의 extension 라이브러리에서 excel 기능을 제공하지만, git을 clone받고 사용해야 해서 폐쇄망 처럼 제한된 환경에서 구현하기 위해 apache poi로 write 하는 소스를 기록한다. (spring boot extension으로 하려는 경우 spring-boot-extension git 주소) : https://github.com/spring-projects/spring-batch-extensions GitHub - spring-projects/spring-batch-extensions: Spring Batch Extensions Spring Batch Extensions. Contribute to s..
에러메시지 : [Ljava.lang.Object; cannot be cast to .. 원인 : query로 entity를 가져와 형변환 하는 경우 발생. JPA에서 native query로 데이터를 가져올 때 흔히 발생하는 에러라고 한다. 반환 타입은 Object[]이며, entity 결과값을 String[]이 아닌 object[]로 받아오는 과정에 형변환 에러. 현재 상황은 배치에서 JPA User로 받아오고 처리하는 과정의 cast에러 발생 케이스이다. reader private ItemReader reader1() throws Exception{ JpaPagingItemReader reader = new JpaPagingItemReaderBuilder() .pageSize(chunkSize) .e..
기본 spring boot 실행하면, SQL로그는 따로 보이지 않기에, DB에 로그를 출력을 위해 설정을 잡는다. 1. gradle 에서는 build.gradle에 log4j2 설정을, maven은 pom.xml 에서 dependency 를 추가하고 refresh gradle/update maven 한다. build.gradle dependencies { ... implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16' } 2. resource 파일 아래에 log4j2를 설정하는 properties 생성. log4jdbc.log4j2.properties log4jdbc.spylogdelegator.name=net.sf.log4jdbc.l..
JPA(Java Persistence API) : 데이터에 접근하기위한 API 규격 (Java의 ORM이다.) ORM(Object Relational Mapping) : application(객체)와 DB관계를 연결해주는 것 Hibernate : JPA의 implements(구현체) 이다. java의 기본적인 jpa provider. Spring Data JPA : Spring에서 자주쓰는 Hibernate를 더 간편하게 사용할 수 있도록 추상객체를 한번 더 감싼 형태 spring boot, swagger3.0, gradle, mysql 환경에서 진행 swagger참고 : Spring Boot에 Swagger 적용 (3.0) 1. build.gradle 에서 spring boot로 jpa 설정을 도와주는..
Spring Boot 처음 실행 시, 아래와 같은 에러 발생한다. 에러 메시지 : *************************** APPLICATION FAILED TO START *************************** Description: Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured. Reason: Failed to determine a suitable driver class 원인 : 스프링 부트 설정 시, Application.java 파일에서 @SpringBootApplication 이 선언되있는데, 이 어노테이션에서 DB 정보..
에러 메시지 : org.springframework.batch.item.WriterNotOpenException: Writer must be open before it can be written to 원인 : ItemWriter 구현시, csv파일을 write하는 작업에서 발생한 에러. @Bean 과 @StepScope으로 ItemWriter을 구현하고 FlatFileItemWriter로 리턴하는게 원인이었다. @Bean @StepScope public ItemWriter writer() throws Exception{ BeanWrapperFieldExtractor extractor = new BeanWrapperFieldExtractor(); ... DelimitedLineAggregator lineA..
FlatFileItemReader : 파일 읽을 수 있는 클래스 간단하게 아래와 같은 3개 필드로 구성된 csv파일을 읽는 테스트를 진행한다. (infotemp.csv) id name address 1 wow seoul 2 chois incheon 3 lee seoul 시작 전에 csv파일과 매핑될 vo를 정의한다. TestCsvFieldVo.java @Getter @Setter public class TestCsvFieldVo { private int id; private String name; private String address; public TestCsvFieldVo(int id, String name, String address) { this.id = id; this.name = name; ..