본문 바로가기

java10

[Java] "20231222" 문자열을 받아 날짜 계산 하기(with. LocalDate, DateTimeFormatter) 상황. 화면 또는 다른 프로세스에서 "20231222" 형식으로 문자열을 받았다. 하루를 더하고 빼고 비교하는 등의 연산을 해야 한다. 예전(JDK7 이하 버전) 에서는 Calander이나 Date 객체를 사용했었다. 이 객체들에는 소소한 문제들이 있었는데, JDK8 버전부터 LocalDate, LocalTime, LocalDateTime 를 지원하기 시작하면서 그런 문제들이 사라졌다. 따라서 JDK8 이상의 버전을 사용하고 있다면 앞으로 이 객체들을 사용하자 날짜형 전환 우선 "20231222" 라는 문자열로 받은 데이터를 날짜 형식의 객체로 전환해야 한다. LocalDate 에는 LocalDate.of(년, 월, 일) 이라는 훌륭한 메서드를 제공한다. 따라서 "20231222" 를 substring .. 2023. 12. 22.
[JAVA] enum 사용 상수를 사용하는 이유 개발을 하다 보면 여러가지 설정 값들이 특유의 코드로 설정되는 경우가 많다. 가령 월요일은 '1', 화요일은 '2'...... 일요일은 '0' 하는 식이다. 코드에서는 '1', '2' 같은 코드만 바라본다. 아래와 같이 해당 코드를 처음 보는 사람은 그 의미를 쉽게 알 수 없다. if( "1".equals(days)){ //todo } 하지만 이것의 코드에 의미를 부여 하면 처음 코드를 보는 사람들도 그 의미 쉽게 파악 할 수 있다. public static final int MON = "1"; ... //나머지 요일 생략 if(MON.equals(days)){ //todo } 한줄이 더 추가되긴 했지만 코드는 더 가독성이 높아져 쉽게 의미를 파악 할 수 있게 되었다. 코드는 무조건.. 2023. 11. 10.
[JAVA] 문자열에 특정 문자가 있는지 확인(matches 이용하기) 다른 기관과 연계 업무를 하던 중 타 기관에서 보내온 파일에 문제가 있어 잘 동작하던 배치에 문제가 생겼다. 정확히 배치 자체의 문제라기 보다는 애초에 서로 약속된 레이아웃으로 데이터를 보내주지 않은 타기관의 문제이었지만 그 레이아웃 정의서만 믿고 예외 상황을 처리하지 않은 배치도 문제라면 문제다. 문제는 간단했다. 원래 '횟수' 로 넘어와야 할 데이터에 숫자 이외의 문자가 끼어 들었다는 것이다. '횟수'라는 이름에서 알 수 있듯이 해당 데이터는 숫자로만 구성된 문자열이다. 따라서 숫자 이외에 문자가 들어 있다면 예외를 발생시키거나 다른 동작을 시켜 주면 된다. 타기관에서 넘어오는 데이터는 텍스트 파일로 되어 있어 읽어 들이는 모든 데이터는 String 타입이다. String 에서 써먹을 수 있는 방법은.. 2021. 6. 9.
[JAVA] 한글이 포함된 문자열 자르기 java 에서 문자열을 자를때 일반적으로 subString 을 사용하는데 알아 두워야 할 점은 subString로는 한글 문자열을 자를 수 없다는 것이다. 정확히는 1바이트만 구성된 문자들(숫자, 영문자 등)의 문자열만 자를 수 있다고 보는게 맞다. 그럼 한글은 어떻게 자르나? 원리는 간단하다. 문자열을 바이트형으로 변환한 뒤 각 글자의 길이를 계산하여 처리하면 되는 것이다. 한글은 2바이트 문자이므로 문자열을 하나하나 반복하다가 해당 문자열이 1바이트 문자인지 2바이트 문자인지 확인 후 잘라 주는 것이다. 이때 주의할 점이라면 자르고자 하는 위치가 2바이트 문자열에 위치해 있다면 1바이트 앞으로 끊어서 읽어주면 된다. 간단한 내용이니 코드를 바로 보자. private String subStrBytes(.. 2021. 5. 13.
[Java/Spring] 클래스(Class), 객체(Object), 인스턴스(Instance)란? 자바에서 말하는 클래스(class)와 객체(object), 인스턴스(Instacne)란 무엇인가? 다른 블로그에서 우연히 클래스, 객체, 인스턴스에 대해 깔끔하게 정리되어 있는 포스팅을 보고 옮겨 봅니다. (출처 : https://cerulean85.tistory.com/149) "'객체'란 소프트웨어 세계에 구현 할 대상이고, 이를 구현하기 위한 설계도가 '클래스' 이며, 이 설계도에 따라 소프트웨어 세계에 구현된 실체가 '인스턴스' 이다." 객체는 프로그램으로 구현 할 실세계의 어떠한 대상을 가리킨다. 이러한 객체를 프로그램으로 구현하려면 세밀히 분석하고 관찰해야 하는데, 이러한 결과를 정리해 놓은 명세서(설계도)가 클래스이다. 이 명세서(설계도)를 바탕으로 프로그램으로 구현해 놓은 것이 인스턴스인 .. 2019. 4. 4.
[JAVA/Spring] MAC OS, STS 에서 lombok 설정하기 스프링으로 웹 개발을 하다보면 VO나 DTO에서 getter/setter 등과 같은의미 없는 작업에 많은 시간을 빼앗기는 경우가 있습니다.이번 포스팅에서는 이 작업을 도와줄 lombok 사용법에 대해서 정리해 보려고 합니다. 1. lombok 다운로드 우선 아래의 위치에서 lombok 파일을 다운로드 받아야 합니다.파일은 jar 형식으로 묶여 있습니다. lombok 다운로드 : https://projectlombok.org/download 다운로드 페이지 화면 캡쳐 2. lombok 설치 lombok는 jar 파일이지만 일반적인 자바 라이브러리 파일과는 다르게 '설치' 라는 과정을 거쳐야 합니다.다운로드 받은 폴더로 이동하여 아래의 명령어로 lombok를 설치해 줍니다. java -jar lombok.j.. 2018. 11. 27.
[JAVA/Spring] 체크 박스의 값을 목록(리스트)에 같이 보여 주기 이번 포스팅은 체크박스로 체크한 데이터 들을 게시판 목록(리스트)에 하나하나 뿌려주기 위해서 고민했던 내용에 대해 적어 보려고 합니다.카드형으로 리스트를 출력해 줘야 하는데카드 안에 각 게시물의 체크박스 데이터를 아이콘으로 같이 출력해 주는 내용입니다. 우선 내용을 정리해 보면게시판 목록(리스트)에 체크박스에 선택된 값들을 출력을 해야한다. 이때 그냥 체크값을 출력하면 사용자들은 모르기 때문에 그 값에 해당하는 적당한 값을 표시해 줘야 한다.문제는체크 박스로 체크한 데이터들은 각각의 컬럼에 저장되는 것이 아니라 하나의 컬럼에 쉼표(,)를 구분자로 해서 저장된다.화면에 뿌려 주려면 각 값들을 모두 분리해서 각각 변수에 담아야 한다. 체크값은 각 글마다 몇개가 선택되어 있는지 알 수 없으므로 일반 변수에 담.. 2018. 11. 10.
[JAVA/Spring] maven 라이브러리 다운로드 경로 수정 방법 이번 포스팅에서는 maven을 사용할 경우 다운로드 받아지는 라이브러리의 경로를 설정하는 방법에 대해 적어보겠습니다. 프로젝트가 매번 같은 버전의 라이버러리나 같은 종류의 라이브러리를 사용하지 않아서각 프로젝트별로 사용하는 라이브러리를 관리해 줘야 할 필요가 있습니다. 이때 maven의 기본 다운로드 경로는 '사용자 계정 / .m2' 디렉토리 입니다. 따라서 프로젝트와 같이 묶어서 관리를 하려면 이 설정을 변경해야 할 필요가 있습니다. 1. 우선 앞으로 사용할 라이브러리의 경로를 생성합니다. 프로젝트 폴더 안에 라이브러리 폴더를 별도로 만들어 두면 관리하기 편합니다. 2. 생성한 디렉토리 아래 settings.xml 이라는 파일을 만들고 아래의 내용을 복사해 넣습니다. 이때 다운로드 받을 경로를 이 파일.. 2018. 10. 17.
[JAVA/Spring] The import javax.annotation.Resource cannot be resolved Spring로 개발을 하다 보면 @Resource 를 많이 사용하게 됩니다.이번 포스팅에서는 신규 프로젝트를 생성하여 개발 할 때,많이 접하게 되는 'The import javax.annotation.Resource cannot be resolved' 에러 처리방법에 대해정리해 보려고 합니다. 이 에러를 해결하는 방법은 크게 2가지 방법이 있습니다. 모두 pom.xml 을 수정해서 해결 할 수 있는데 한 가지는 dependency 를 추가해 주는 것이고다른 한 가지는 plugin 을 추가해 주는 방식입니다. 우선 첫 번째 방법은 pom.xml 에 아래의 구문을 추가해 줍니다. javax.annotationjavax.annotation-api1.3.1 위 구문을 추가한 후, pom.xml 파일을 저장한 후.. 2018. 10. 3.
[JAVA/Spring] @Value annotation 이번 포스팅 에서는 @Value 어노테이션을 정리해 봅니다. 프로젝트가 커지다 보면 공통으로 사용하는 값을 별도로 관리를 하게 되는데이런 값들을 쉽게 가져다 쓰기 위해 사용합니다.쉽게 생각해서, 공통 값들을 정의해 놓은 파일에 접근하여원하는 데이터를 읽어와 사용한다고 생각하면 됩니다. 이렇게 관리를 하는 이유는 관리를 쉽게 하기 위해서 입니다. 사용법은 간단합니다. 우선 아래의 코드를 봅시다. class ValueSample() { @Value("#{WORK.LOCATION}")String JOB; public ValueSample() {// TODO}} 클래스의 프로퍼티 설정 부분에 @Value 어노테이션을 사용한 것을 볼 수 있습니다.위 코드의 의미는프로퍼티 파일에서 WORK의 LOCATION 값을 .. 2018. 7. 29.