본문 바로가기

전체 글95

MessageSource 기능을 static 메서드로 사용하기 스프링부트에서 개발 진행 시 MessageSource를 구현하여 YMAL에 등록한 메시지를 사용한다. (예를 들면 messageSource.getMessage... 이런 식으로) 그런데 이렇게 되면 메시지를 사용하는 모든 소스에 MessageSource를 의존성 주입을 받아야 하기 때문에 소스코드가 지저분해진다. 그래서 MessageSource를 의존성 주입을 받지 않고, static 메서드로 선언하여 사용하는 방법에 대해 알아볼 것이다. 우선 이번 실습을 진행하기 위해서는 MessageSouruce가 구현되어 있어야 가능하다. MessageSource 구현 : package com.config; import net.rakugakibox.util.YamlResourceBundle; import org.s.. 2022. 3. 18.
Spring Batch 기동 시 JOB 상태를 STARTED에서 FAILED 로 변경하기 이번 글에서는 Spring Batch 기동 시 배치 상태를 STARTED에서 FAILED로 변경하는 방법에 대해 알아볼 것이다. Spring Batch 를 개발하다 보면, 코드 검증 등을 위해서 WAS 재기동하는 경우가 많다. 그런데 Spring Batch의 특정 Job이 실행 중일 때 재기동을 하게 되면 해당 Job은 STARTED 상태로 남아있게 되며, 만약 Job의 중복 실행을 방지하는 코드가 들어가 있게 되면, STARTED 상태인 Job은 실행이 되지 않게 된다. 따라서 매 재기동 시마다 STARTED인 상태의 Job을 FAILED나 COMPLETED 상태로 변경한 후 Job을 실행시켜야 하는 번거로움이 발생한다. 이런 번거로움을 해결하기 위해서는 기동 시 배치 상태를 STARTED에서 FAIL.. 2022. 3. 17.
SqlSessionFactoryBean setMapperLocations에 mapper.xml 여러 개 등록하기 이번 글에서는 스프링부트에서 mybatis 사용 시, SqlSessionFactoryBean의 setMapperLocations 메소드에 mapper.xml을 여러 개 등록하는 방법에 대해 알아볼 것이다. 우선 스프링부트 서비스에서 DB에 접근하기 위해서는 application.yml 파일에 DB 접속정보를 작성하게 되는데, 여러 개의 DB에 접근해야 하는 경우는 별도의 Java Config 작성 후, @MapperScan 어노테이션에 해당 DB 에 접근하는 SQL mapper 인터페이스의 패키지 위치를 작성하고, SqlSessionFactoryBean의 setMapperLocations 메소드로 mapper.xml의 위치를 지정해주게 된다. package com.project.common.config;.. 2022. 3. 17.
sftp를 활용하여 파일 리스트를 가져오는 shell script 만들기 이번 글에서는 linux 환경에서 sftp를 활용하여 여러 파일을 가져오는 쉘을 만들어 볼 것이다. 해당 쉘을 정상적으로 수행시키기 위해서는 쉘 수행 서버에서 원격지 서버로 비밀번호 없이 sftp 접속이 가능하도록 설정해줘야 한다(예를 들면 ssh-keygen 등록 등) 1. 쉘 실행 순서 1) 동일 이름의 쉘 동시수행 체크 2) 파일 리스트 추출(아래 쉘에서는 FILE이라는 이름으로 시작하는 txt 파일 추출) 3) 파일 리스트를 sftp 명령어를 수행해서 원격 디렉토리에서 로컬 디렉토리로 가져옴 2. 쉘 스크립트 내용 #!/bin/bash TODAY=`date +%Y/%m/%d-%H:%M:%S` REMOTE_ADDR="[원격지 IP 주소]" REMOTE_USER=[원격지 유저ID] REMOTE_DIR.. 2022. 3. 3.
QUARTZ 스케쥴러에서 PREV_FIRE_TIME, NEXT_FIRE_TIME, START_TIME 조회하기 QUARTZ 스케쥴러의 테이블 중 QRTZ_TRIGGERS 테이블에는 트리거의 PREV_FIRE_TIME(이전 수행시간), NEXT_FIRE_TIME(다음 수행시간), START_TIME(시작시간) 등이 저장되어 있다. 하지만 데이터가 1970-01-01부터 경과한 밀리세컨드 형식으로 들어가 있기 때문에 해당 컬럼의 데이터를 조회하기 위해서는 아래 쿼리처럼 데이터를 조회해야 한다. SELECT TRIGGER_NAME , TO_CHAR(TO_DATE('19700101', 'yyyymmdd') + (PREV_FIRE_TIME/(24*60*60*1000) + 9/24), 'yyyy/mm/dd hh24:mi:ss') AS PREV_FIRE_TIME , TO_CHAR(TO_DATE('19700101', 'yyyy.. 2022. 3. 3.
ORACLE BLOB 데이터 조회 ORACLE에서 컬럼 타입이 BLOB 인 경우, 해당 컬럼의 데이터를 조회하기 위해서는 아래와 같이 쿼리를 실행하면 된다. SELECT UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR([컬럼명])) FROM [테이블]; 2022. 3. 3.
잃지 않는 주식 투자를 위한 매수 타이밍 & 좋은 종목 고르기 유튜브를 보다보니 간혹 챙겨보는 김작가TV 채널에 홍춘욱 박사님이 나오셔서 잃지 않는 주식 투자를 위한 매수 타이밍과 좋은 종목을 선택하는 방법에 대해서 설명해준 내용이 있었다. 내용을 보면 리먼브라더스 사태나 코로나 위기 경험을 통해 대부분 머릿속으로는 알고 있는 내용이었지만, 글로 기록하면서 한번 더 정리해 볼 수 있었다(나중에 투자하기 전에 참고도 할겸) 1. 달러를 미리 사두고 있다가 세상 모든 사람들의 의견이 비관적으로 일치할 때 달러를 원화로 환전하자 - 신문이나 방송 등에 나오는 모든 사람들이 미래를 비관할 때가 투자하기 좋을 때다. 예를 들면 금융위기, 코로나 쇼크 오래간다. 걷잡을 수 없는 위기가 온다.. 등등 - 모든 사람들이 미래를 비관할 때 주식 가격은 모든 리스크가 반영된 바닥 가.. 2021. 7. 5.