Backend 46

STS 4에서 war 파일로 쉽게 배포하는 방법 (배포 및 실행까지)

STS 4에서 Spring boot와 Maven으로 개발한 애플리케이션을 war 파일로 배포하려고 한다. 이클립스에서는 간단히 war 파일을 만들 수 있지만, STS 4에서는 Export - war file 탭 항목이 아예 뜨질 않는다. Stackoverflow에서는 플러그인(Eclipse Enterprise Java and Web Developer Tools)을 설치하면 된다고 하지만, 굳이 플러그인을 설치하지 않아도 Maven을 통해 war 파일을 생성할 수 있다.Maven으로 war 파일 생성하기STS에서 war 파일로 만드는 방법은 생각보다 간단하다. 아래 2개만 하면 된다.프로젝트 폴더 우클릭 > Run As > Maven clean프로젝트 폴더 우클릭 > Run As > Maven instal..

Java에서 jsoup을 이용하여 HTML parsing 하기

자바에서 jsoup 라이브러리는 HTML 문서를 파싱 하여대부분의 사이트의 원하는 정보만 뽑아낼 수 있는 라이브러리이다. 파이썬의 BeautifulSoup와 비슷한 기능이다.jsoup 라이브러리 추가(pom.xml) org.jsoup jsoup 1.15.3 파싱할 대상 페이지 찾기w3schools 사이트에서 상단 메뉴에 나열된 프로그래밍 언어 목록을 파싱 하여 가져오려고 한다. F12로 개발자도구를 열어 메뉴를 선택해서 가져올 selector 키워드를 찾는다. 태그로 감싸져 있는 목록을 가져올 것이다. 참고로 홈페이지가 리뉴얼되어 모양이 바뀌면 selector 역시 바뀔 수 있다. Parser 클래스HTML을 파싱 하여 페이지 정보를 가져올 클래스를 작성하자. selector 변수는 CSS selecto..

Java에서 Generator 규칙에 따라 거래코드 만들기 (SecureRandom 난수 생성)

거래코드 생성 규칙이 아래와 같다고 가정하자. => 거래날짜yyyyMMdd(8)+난수(10) Generator 파일을 만들어서 타 서비스에서 거래코드를 쉽게 가져다 쓸 수 있도록 소스를 만들어보았다. 이때 난수는 SecureRandom 클래스를 이용해서 알파벳, 숫자내에서 랜덤으로 10자리 생성된다.Generator.javaimport java.security.SecureRandom; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; public class Generator { private final static String CHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqr..

Java에서 UUID를 이용해서 난수 생성하기 (feat. SecureRandom)

UUID UUID (Universally Unique Identifier) 는 말그대로 범용 고유 식별자로 사용할 수 있는 ID를 말한다. 보통 다른 값과 중복되지 않는 유니크한 값을 생성해야 할 때 사용하는데, 예를 들어 세션 식별자, 쿠키 값, 무작위 데이터베이스 키 등에 사용하곤 한다. UUID를 통해 생성된 난수는 중복될 수도 있다. 하지만 중복되는 확률이 굉장히 희박해서 사실상 중복이 아니라고 볼 수 있는 셈이다. UUID를 활용한 예제를 보자. import java.util.UUID; public class Sample { public static void main(String[] args) { UUID uuid = UUID.randomUUID(); System.out.println(uuid...

Java에서 서버 호스트(host) 정보 가져오는 법

로컬, 개발, 운영 서버간 다르게 동작을 처리해야 할 경우가 있다. 이럴 때 InetAddress.getLocalHost()를 이용하여 호스트 정보를 가져와서, 로컬 서버인지 구분할 수 있다. 호스트 정보 가져오는 예제 import java.net.InetAddress; import java.net.UnknownHostException; import lombok.extern.slf4j.Slf4j; public class Sample { public static void main(String[] args) { System.out.println("호스트 정보 : " + getHostInfo()); } public static String getHostInfo() { String hostName = ""; S..

스프링부트 개발환경 구성하기 (8) 동적 정렬처리

포스팅 순서는 아래와 같다. OpenJDK 17 설치 STS 4 설치 스프링부트 프로젝트 생성 메이븐 Local Repository 설정 DB 설계와 REST API 설계 mybatis 연동과 게시판 목록 조회 페이징 (Mybatis에서 Pageable) 동적 정렬처리 (현재 포스팅) 동적으로 정렬 처리하기 이전 포스팅에서는 Pageable을 이용하여 페이징을 구현해보았다. 이번에는 좀 더 응용해서 등록일자 기준으로 동적으로 정렬 처리를 해보자. BoardController.java package com.company.helloBoard.domain.board.controller; import org.springframework.beans.factory.annotation.Autowired; import..

스프링부트 개발환경 구성하기 (7) 페이징 (Mybatis에서 Pageable)

포스팅 순서는 아래와 같다. OpenJDK 17 설치 STS 4 설치 스프링부트 프로젝트 생성 메이븐 Local Repository 설정 DB 설계와 REST API 설계 mybatis 연동과 게시판 목록 조회 페이징 (Mybatis에서 Pageable) (현재 포스팅) 동적 정렬처리 Pageable의 오해 Spring Data에서 제공하는 Pageable을 사용하면 페이징 작업을 좀 더 간편하게 개발할 수 있다. 처음에는 Pageable에 대해 알게 되었을 때, JPA에서만 사용할 수 있는 것으로 생각했다. 왜냐하면 대다수의 블로그에서 Spring Data JPA에서 제공되는 기능이라는 식으로 잘못된 정보를 기술하고 있었기 때문이다. 하지만 Mybatis에서도 사용할 수 있다. Spring Data에서..

Spring Boot 내장톰캣 war 배포시 한글 깨짐 설정

문제 발생 spring boot로 제작된 프로젝트를 실행하려면, 프로젝트를 war 또는 jar 파일로 export 하여 아래처럼 해당 파일을 실행하면 된다. java -jar example.war 실행해보니 톰캣 서버가 정상적으로 시작되었지만, 로그로 남긴 한글들이 모두 깨짐 현상이 발생하였다. 해결 방법 파일 인코딩 문제이므로 java -jar 파일 실행 시 직접 encoding을 설정해 주면 된다. java -Dfile.encoding=UTF-8 -jar example.war

스프링부트 개발환경 구성하기 (6) Mybatis 연동과 게시판 목록 조회

📢 2024년 2월 기준으로 포스팅 내용을 업데이트하였습니다. 포스팅 순서는 아래와 같다. OpenJDK 17 설치 STS 4 설치 스프링부트 프로젝트 생성 메이븐 Local Repository 설정 DB 설계와 REST API 설계 mybatis 연동과 게시판 목록 조회 (현재 포스팅) 페이징 (Mybatis에서 Pageable) 동적 정렬처리 1. Mybatis 라이브러리 추가 기본적으로 생성되는 스프링부트 프로젝트는 Mybatis를 포함하지 않는다. 따라서 스프링부트에서 Mybatis를 설정할 수 있는 라이브러리를 설치해야 한다. 아래의 mybatis-spring-boot-autoconfigure 요구사항 표를 보면 Spring Boot, Java 버전에 따라 버전이 명시되어 있다. 내 Spring..

스프링부트 개발환경 구성하기 (5) DB 설계와 REST API 설계

📢 2024년 2월 기준으로 포스팅 내용을 업데이트하였습니다. 포스팅 순서는 아래와 같다. OpenJDK 17 설치 STS 4 설치 스프링부트 프로젝트 생성 메이븐 Local Repository 설정 DB 설계와 REST API 설계 (현재 포스팅) mybatis 연동과 게시판 목록 조회 페이징 (Mybatis에서 Pageable) 동적 정렬처리 DB 설계 https://aquerytool.com/에서 ERD를 그린 후 모든테이블 생성 SQL을 생성해주는 기능이 있으므로 간단하게 스키마 구성을 할 수 있다. 프로젝트 구조 설계 src/main/java com.company.helloBoard common - code - config - controller - exception - securify - ut..