목록java (13)
두리공장
필요에 따라서는 VO를 계속 만들지 않고 innerClass를 사용하는 경우가 있다. innerClass 는 아래의 형태와 같다. @Data public class CommonVO { @Getter @Setter public static class BOOK { private String column1; private String column2; private String column3; private String column4; } } 그런데, mybatis에서 이러한 모양의 모델을 불러와야 할 경우에, alias가 안먹는 경우가 있다. 이때에는 아래와 같이 정의해 준다. 이렇게 하면, mapper에서 아래와 같이 사용할 수 있다. 여담으로, RestAPI로 사용할 경우, 필드값에 null이 있을 경우 ..
스프링 부트로 개발된 back-end 에 스프링 배치를 이식해야 할 경우가 생겼다. 이렇게 하려면, 아래와 같은 순서로 셋팅해야 한다. 1. pom.xml 에 의존성 추가 (dbcp 포함) 2. application.yml 에 db connection 정보 추가 3. DataSourceConfig, VO 추가 4. 시작 지점에 스케줄러 추가 5. JobConfig 구현 (Job, Step, tasklet, ItemReader, ItemWriter)... 순서대로 셋팅해 보자 pom.xml 에 의존성 추가 (dbcp 포함) org.springframework.boot spring-boot-starter-batch commons-dbcp commons-dbcp 1.2.2 org.springframework...
Oz리포트를 라이브러리로 사용하는 경우가 있었다. 일단 ozsfw80.jar 파일을 /src/main/resources/libs/ozsfw80.jar 에 복사하자 그리고 나서 메이븐 플러그인을 pom.xml 의 build>plugins 에 추가한다. org.springframework.boot spring-boot-maven-plugin true 마지막으로 dependency를 추가한다. oz report 1.0.0 system ${pom.basedir}/src/main/resources/libs/ozsfw80.jar 끝.

작업을 하다보니, 배치 시작을 위해 config 를 설정할 필요가 생겼다. 그리고 Batch용 DB 및 작업용 DB를 구분해야 하였다. (기존에는 DataSource 에서 직접 설정) Batch용DB는 배치 종료시 사라져도 되는 메모리DB인 H2에 넣어야 하는데, Dbeaver와 같은 툴에서 접근하기 위해 별도의 설정이 필요했다. 그리고 ItemReader에서 읽거나 ItemWriter에서 저장한 후의 데이터에 대해 별도의 가공이 필요할 경우도 있었다. 그래서 이 포스트를 작성하게 된 것이다. 먼저 스프링배치를 기동할때 H2 메모리DB를 Dbeaver 와 같은 툴에서 접근하기 위해 아래와 같이 설정했다. application.yml spring: h2: console: enabled: true path:..
pom.xml net.javacrumbs.shedlock shedlock-spring 4.26.0 net.javacrumbs.shedlock shedlock-provider-jdbc-template 2.1.0 Job runner @Autowired private JobLauncher jobLauncher; //잡을 실행한다. @Scheduled(cron = "* 0/5 * * * *") @SchedulerLock(lockAtLeastFor = "2m", lockAtMostFor = "3m") public void perform() throws Exception { System.out.println("start JOB ============="); JobParameters param = new JobPar..
파일 업로드를 하려고 한다. 그런데, 파일만 올려야되는 것은 아니고, json data도 동시에 업로드 해야 한다면? 먼저, html 부터 작성해 본다. 사진추가 . . . "사진추가" 버튼(add_file1)에 클릭 이벤트를 건다. 버튼을 클릭하면 파일 업로드 다이얼로그 창이 뜬다.(accept 에 확장자를 등록하면 다이얼로그 창에 필터 기능이 적용된다) 파일업로드시 이미지 확장자만 첨부가 가능하도록 handleImgFileSelect 함수를 이벤트 발생시 호출해 준다. 파일명이 이미지인 경우에만 서버에 업로드 할 수 있다. formData에 두가지 데이터 타입을 동시에 업로드 해야 하므로, formData.append에 file과 jsondata를 추가하되, jsondata에는 contentType ..
스프링 배치의 Step에서 writer를 사용할 때, 한번만 사용할수 있다. DB에도 쓰고, 서비스도 호출하고, 메시지도 출력하는 등 여러가지 작업을 수행하기 위해서 어떻게 할까? 이럴경우에는 CompositeItemWriter를 이용해서 여러개의 write 작업을 수행할 수 있다. 먼저 ItemWriter를 만들자. 이전에 만들었던 jdbcBatchItemWriter, execItemWriter 을 재활용하자. @Bean public JdbcBatchItemWriter jdbcBatchItemWriter(DataSource dataSource) throws Exception { return new JdbcBatchItemWriterBuilder() .dataSource(mariadbDataSource)..
스프링 배치를 구성하다보면, 배치용 메타DB는 H2 인메모리DB를 사용하고, 데이터 소스는 다양하게 연결할 경우도 있다. 이제, 여러 데이터소스를 연결하는 방법을 살펴보자 application.yml 에 다양한 데이터 소스를 설정한다. spring: default: jdbc: driver-class-name: org.h2.Driver url: jdbc:h2:mem:userdb username: sa password: mariadb: jdbc: url: jdbc:mariadb://localhost:3306/test_db username: {userid} password: {password} driver-class-name: org.mariadb.jdbc.Driver postgres: jdbc: url: j..