본문 바로가기
  • Code Smell

Framework43

[SPRING BOOT] 스프링부트로 개발하기 10 - Batch Tasklet 처리 [SPRING BOOT] 스프링부트로 개발하기 10 - Batch Tasklet 처리 Tasklet이 아니라 Dependency 추가 및 Table DDL, Chunk (Reader -> (Processor) -> Writer)처리는 여기 Chunk 처리에 이어서 진행하므로 Dependency, Table DDL Script, AbstractClass 생성 등은 진행하지 않는다. Tasklet의 구조 (1회성) Tasklet은 계속 진행할지, 그리고 끝낼지 두가지 경우만 제공한다. Chunk와 같이 Reader, Processor, Writer 세 로직을 나눠 제공하는 형태가 아니라, 1회성 처리 로직 또는 Reader, Processor, Writer를 한 로직에 모아놓는 방식의 비즈니스 로직을 구현할.. 2020. 2. 3.
[SPRING BOOT] 스프링부트로 개발하기 10 - Batch Chunk 처리 [SPRING BOOT] 스프링부트로 개발하기 10 - Batch Chunk 처리 스프링부트에서 기존 SpringBatch 기능을 구현할 수 있다. 스프링 배치 기존 처리방법이 Tasklet, Chunk (Reader, Processor, Writer) 방식이 존재하는데 Chunk 처리를 구현해본다. Spring Batch Chunk의 구동원리 사진출처 : TERASOLUNA Batch Framework for Java (5.x) Development Guideline Dependency 추가 org.springframework.boot spring-boot-starter-batch Batch Meta Table 생성 스프링 배치는 실행 로그를 TX(기록), Ram(휘발성) 방식으로 관리 할 수 있는데 .. 2020. 1. 21.
[SPRING BOOT] 스프링부트로 개발하기 9 - Redis(NoSQL) 기본 연동 [SPRING BOOT] 스프링부트로 개발하기 9 - Redis(NoSQL) 기본 연동 Redis 설치가 안되어있다면 [REDIS] Redis 설치 (for Windows 64bit) 부트에서는 dependency만 추가하면 거의 바로 쓸 수 있도록 대부분 기능을 미리 세팅해놓았다. pom.xml Dependency 추가 org.springframework.boot spring-boot-starter-data-redis application.properties에 기본 설정 추가 host, port만 추가 하면 바로 사용 가능하다. 이외 세부설정은 다음에 다룬다. spring.redis.host=127.0.0.1 spring.redis.port=6379 Redis와 GET/SET을 이어줄 Test용 Cla.. 2020. 1. 13.
[SPRING BOOT] 스프링부트로 웹 개발하기 3 - HandlerInterceptor [SPRING BOOT] 스프링부트로 웹 개발하기 3 - HandlerInterceptor 클라이언트에서 들어온 요청을 서블릿이 처리하기 전 후에 각각 전처리, 후처리를 할 수 있다. 모든 요청에 대해 공통으로 들어가는 로직을 구현하는 부분에 사용할 수 있다. HandlerInterceptor Interface 구현 JAVA8 부터 Interface에 존재하는 default method는 구현체에서 반드시 구현하지 않아도 된다. HandlerInterceptor에 존재하는 preHandle, postHandle, afterCompletion 메소드가 전부 default method 이므로 필요하면 직접 구현해야 한다. HandlerInterceptor 는 이렇게 생겼다. /* * Copyright 200.. 2019. 7. 31.
[SPRING BOOT] 스프링부트로 웹 개발하기 2 - MyBatis 연동 [SPRING BOOT] 스프링부트로 웹 개발하기 2 - MyBatis 연동 MVC 기본 모델인 Controller -> Service -> Mapper 구조로 구현 먼저 JDBC랑 MyBatis 사용을 위해 pom.xml 에 Dependency 추가 해 준다. org.mybatis.spring.boot mybatis-spring-boot-starter 1.3.2 mysql mysql-connector-java runtime org.springframework.boot spring-boot-starter-jdbc SQL을 관리 할 폴더를 만든다. 꼭 하위폴더에 없어도 된다. SqlSession Config Class에 resolver가 읽을 수 있게만 해주면 된다. 예제는 resources/mapper/.. 2019. 7. 30.
[SPRING BOOT] 스프링부트로 웹 개발하기 1 - Thymeleaf 사용하기 [SPRING BOOT] 스프링부트로 웹 개발하기 1 - Thymeleaf 사용하기 Spring Boot 2.2.0 + Template Engine (Thymeleaf) Spring Boot에서 JSP에 대한 지원을 줄이고 있다. Server Side Template Engine은 JSP 외에 HTML로 뷰를 구성하고, 서버에서 가져온 데이터를 엔진이 html에 넣어 클라이언트에 전달하는 방식이다. JSP에서는 스크립틀릿과 같은 방법으로 프론트엔드와 백엔드가 완전 분리가 안되었다면 템플릿 엔진으로 프론트엔드와 백엔드를 완전하게 분리 되도록 구성되었다. 스프링부트 템플릿엔진 - 제타위키 여러개의 템플릿 엔진 중 Thymeleaf (타임리프라고 읽음) 으로 웹을 구성한다. 프로젝트 생성 application.. 2019. 7. 25.
[SPRING BOOT] 스프링부트로 개발하기 8 - Apache Kafka 연동 2 [SPRING BOOT] 스프링부트로 개발하기 8 - Apache Kafka 연동 2 SPRING BOOT랑 APACHE-KAFKA 연동하기 Maven Dependency 추가 org.apache.kafka kafka-clients org.apache.kafka kafka-streams org.apache.kafka kafka_2.11 Consumer는 Listener를 사용하기 위해 라이브러리를 하나 더 추가 해 준다. org.springframework.kafka spring-kafka application.properties 설정 spring boot에 key값이 기본적으로 내장되어 있다. spring.kafka.bootstrap-servers=localhost:9092 spring.kafka.co.. 2019. 7. 18.
[SPRING BOOT] 스프링부트로 개발하기 8 - Apache Kafka 연동 1 [SPRING BOOT] 스프링부트로 개발하기 8 - Apache Kafka 연동 1 아파치 카프카 설치 링크 : Apache Kafka 리눅스의 경우 kafka/bin/ 안에 있는 sh를 실행하고 윈도우의 경우 kafka/bin/windows/ 안에 있는 bat을 실행한다. 여기서는 윈도우만 설명한다. zookeeper를 실행할때 사용되는 JAVA_HOME을 windows/kafka-run-class.bat 에서 가져와 실행하므로 특정 JDK로 실행하려면 kafka-run-class를 수정하면 된다. rem Which java to use IF ["%JAVA_HOME%"] EQU [""] ( set JAVA=java ) ELSE ( set JAVA="D:/Program/JAVA8/bin/java" ) .. 2019. 7. 18.
[SPRING BOOT] 스프링부트로 개발하기 7 - Mybatis 연동 2 [SPRING BOOT] 스프링부트로 개발하기 7 - Mybatis 연동 2 쿼리 바인딩 및 parameter 바인딩, result Model 사용하기 현재 TABLE에 이런 데이터가 있다고 할때 SELECT 결과를 가져올 Model Class (DTO 또는 VO) package sunghs.boot.db; public class Models { private String aa; private String bb; private String cc; } 이런 클래스가 있다면, 쿼리 SELECT 결과 컬럼에 변수명과 동일하게 ALIAS를 주면 자동 값 주입이 된다. SQL 파일 SELECT 'data1' AS aa, 'data2' AS bb, 'data3' AS cc.. 2019. 7. 17.