분류 전체보기
-
[Spring] 스케줄러 만들어보기웹 개발/Spring Framework 2018. 12. 18. 16:22
스케줄링.md xml에서 스프링 스케줄링 구현하기(xml task 네임스페이스 활용) 구글링을 해봤을 때, java단에서 스케줄링을 구현하는 경우가 많았다. xml에서 구현하는 법은 잘 안보여서 정리해둬야짓. 스프링은 서비스 추상화 기법을 이용해서 스케줄링 기술에 독립적인 사용이 가능한 추상화 서비스 인터페이스인 TaskScheduler를 제공한다. TaskScheduler는 조건에 따라 실행하거나 반복적인 작업을 수행한다. 주어진 태스크는 특정 시간에 동작하거나 일정 간격으로 실행되게 만들수 있다. 그 중 task 네임스페이스를 활용해서 스케줄러 만드는 법을 소개해보려한다. 먼저 스케줄러가 들어갈 xml에서 TaskScheduler 타입의 ThreadPoolTaskScheduler 빈을 등록한다. sp..
-
[java] 두 날짜간 월 차이 구하기프로그래밍 언어/자바 & 코틀린 2018. 12. 10. 22:54
두 날짜간의 월 차이 구하기 자동으로 월차를 생성해주는 스케줄러를 구현 중이다. 두 날짜간의 월 차이를 알아내는 함수를 구현해야 했다. 예를 들어, 2018년 12월 1일에 스프링 스케줄러가 실행되면 2018년 7월 16일에 입사한 사람은 8월 1일부터 월차가 발생한다고 가정했을 때, 8월, 9월, 10월, 11월, 12월까지 총 5개의 월차가 발생해야 한다. 그래서 일(day)은 상관없이 월끼리만 계산해주면 된다. 아래는 구현한 함수다. 참 쉽죠잉? ㅎ /** * 두 날짜간의 월 차이 구하기 * */ private int getMonthsDifference(Date date1, Date date2){ /* 해당년도에 12를 곱해서 총 개월수를 구하고 해당 월을 더 한다. */ int month1 = d..
-
[java] 유효한 날짜인지 체크하는 방법(Validation Date)프로그래밍 언어/자바 & 코틀린 2018. 11. 28. 20:52
validationDate java에서 유효한 날짜인지 체크하는 방법 아무 날짜가 스트링 형태로 입력값이 들어올 경우, 에러 메세지를 띄워주어야 하는 기능을 만들어야 했다. 우리 회사는 java7을 이용하기 때문에 java8에서 향상됐다는 datetime은 사용하지 못한다. 그래서 다른 방법을 찾았다. dateFormat의 setLenient를 사용하는 것이다. 여기서 Lenient의 사전적 의미는 '허술하다, 생각한 것보다 판단이나 처벌이 약하다’라는 뜻이다. java doc을 참조하면 아래처럼 설명하고 있다. setLenient(boolean lenient) Specify whether or not date/time parsing is to be lenient. 날짜가 파싱될 때 허술하게 할 지 말지..
-
[Mybatis]mybatis에서 테이블의 언더바 컬럼을 카멜형식으로 변환해주는 설정웹 개발/Spring Framework 2018. 11. 20. 12:26
underscoreToCamel Mybatis에서 테이블의 언더바 컬럼을 카멜형식으로 변환해주는 설정 있을 것 같은데 알지는 못했던 설정이다. 보통 테이블의 컬럼은 언더바 형식(city_name)으로 되어있고, 개발을 할 때는 카멜형식(cityName)으로 만든다. 그래서 왠지 언더바를 카멜로 바꿔주는 설정이 있지 않을까 했는데, 선임님이 찾아주셨다! 물론 Mybatis 문서를 꼼꼼히 읽어봤다면 알겠지만, 보통 하나하나 다 읽어보진 않으니까 몰랐었다. 나만 그런가… Mybatis 공식 문서를 보면 이렇게 적혀있다. 설정 설명 값 디폴트 mapUnderscoreToCamelCase 전통적인 데이터베이스 칼럼명 형태인 A_COLUMN을 CamelCase형태의 자바 프로퍼티명 형태인 aColumn으로 자동으로..
-
[java]DTO(또는 VO)에서 객체의 default 값 만들어주는 방법(Constructor of DTO)프로그래밍 언어/자바 & 코틀린 2018. 11. 20. 11:57
dtovalue DTO에서 생성자를 통해 default value 생성하기 insert를 할 경우 기본값이 있다면 DTO에서 만들어주고 Primary key가 될 변수만 새로운 값을 넣어주면 된다. 생성자를 통해 default 값을 만든 이유는 현재 회사에서 개발중인 메뉴가 환경설정 부분이기 때문이다. 사용자가 따로 설정해두지 않으면 default값이 들어가 있도록 하기 위해서다. (최초 메뉴 사용 시 설정된 값이 없을 것이기 때문에 최초 메뉴 클릭시 default를 insert 해주도록) 기본 생성자를 통해 default값을 만들 수도 있고, 오버로딩을 통해 생성자에 매개변수를 넣어서 기본 값을 만들 수 있다. 만들어 본 코드 예시 public class ConstructDto { private Str..
-
[Programming] 인터페이스와 추상 클래스의 차이(Difference between interface and abstract class)웹 개발/웹&프로그래밍 2018. 11. 15. 20:51
Difference Difference between interface and abstract class 인터페이스와 추상 클래스의 차이 추상 클래스와 인터페이스의 차이를 알고 싶어서 스택오버플로를 찾아봤더니 높은 점수를 받은 답변 두 개가 있어서 정리해둔다. 두 답변 모두 읽어보면 추상 클래스와 인터페이스의 차이에 대한 감이 조금 오는 것 같다! 개인적으로 코드는 첫 번째 답변, 설명은 두 번째 답변이 와 닿았다. (* 오역이 있을 수도 있으니 참고 바랍니다.) 첫 번째 답변 해석본 Interfaces An interface is a contract: The person writing the interface says, “hey, I accept things looking that way”, and t..
-
[Spring] @PostConstruct란?(정의와 장점)웹 개발/Spring Framework 2018. 11. 12. 17:31
1. @PostConstruct란? @PostConstruct는 의존성 주입이 이루어진 후 초기화를 수행하는 메서드이다. @PostConstruct가 붙은 메서드는 클래스가 service(로직을 탈 때? 로 생각 됨)를 수행하기 전에 발생한다. 이 메서드는 다른 리소스에서 호출되지 않는다해도 수행된다. 출처: Oracle Doc 2. 왜 사용하는가(장점)? 1) 생성자(일반)가 호출 되었을 때, 빈(bean)은 아직 초기화 되지 않았다. (예를 들어, 주입된 의존성이 없음)하지만, @PostConstruct를 사용하면, 빈(bean)이 초기화 됨과 동시에 의존성을 확인할 수 있다. + 개인 의견으로 클래스 내에 @Autowired를 붙여서 객체를 사용할 때, 생성자가 필요하다면 @PostConstruct..
-
Node.js로 사칙연산 계산기를 만들어봐요 - 3편(계산기 완성하기)프로그래밍 언어/Node.js(노드) 2018. 11. 11. 18:08
2편에 이어서 이제 핵심인 계산기 화면과 계산기 로직을 통해 계산기를 완성해보겠습니다! 팝업창으로 호출한 calculator/calculatorPop url을 받기위해서 calculator 모듈을 만들겠습니다. router 폴더 밑에 아래처럼 폴더와 js파일을 만들어주세요. calculator.js에 아래의 코드를 작성해주세요.var express = require('express')var router = express.Router() router.get('/calculatorPop', function(req,res){ res.render('calculator.ejs')}) module.exports = router; calculatorPop이란 호출이 들어오면(get으로 받습니다) calculator...