Backend/Spring, SpringBoot 27

Spring Security 3 버전에서 h2.console.enabled : true일 때 servlet 오류 해결 방법

Spring security 3점대 버전에서 spring.h2.console.enabled=true 로 옵션을 주니 아래 오류가 발생했다. 문제 발생 org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration': Unsatisfied dependency expressed through method 'setFilterChains' parameter 0: Error creating bean with name 'filterChain' de..

스프링부트 개발환경 구성하기 (9) 게시물 조회/등록/수정/삭제

포스팅 순서는 아래와 같다. OpenJDK 17 설치 STS 4 설치 스프링부트 프로젝트 생성 메이븐 Local Repository 설정 DB 설계와 REST API 설계 mybatis 연동과 게시판 목록 조회 페이징 (Mybatis에서 Pageable) 동적 정렬처리 게시물 조회/등록/수정/삭제 (현재 포스팅) REST API 설계 내용을 기반으로 게시물 조회, 등록, 수정, 삭제 기능을 구현했다. 사실 크게 어려운 게 없기 때문에 소스 만으로 충분히 설명이 될 것 같다. BoardController.java package com.company.helloBoard.domain.board.controller; import org.springframework.beans.factory.annotation.A..

스프링부트 Scheduler 정해진 시간마다 동작 시키는법

이번 프로젝트에서 정해진 시간마다 특정 동작을 수행해야 하는 기능이 있었다. Spring Boot에서 제공하는 Scheduler 기능을 이용해서 매우 간단하게 구현할 수 있다. 이번 포스팅에서는 특정 시간에 스케줄러를 통해 특정 동작을 구현하는 다양한 예제를 살펴볼 것이다. (쪼금 스압 주의)1. 스케줄러 활성화Scheduler는 기본적으로 Spring Boot에 포함되어 있어서 의존성을 별도로 추가할 필요는 없다. 메인 Application 클래스에 @EnableScheduling를 추가하여 Scheduler를 활성화한다.@SpringBootApplication @EnableScheduling // 스케줄러 활성화 public class SchedulerApplication { public static..

Spring Boot 내장 톰캣 제외시키는 방법

Spring Boot로 개발된 애플리케이션을 실행할 때, 내장 톰캣이 아니라 다른 서버로 배포해야 하는 경우가 있다. (예를 들어 내장톰캣이 아니라 Weblogic 서버로 배포해야 할 경우) 이런 경우 내장톰캣 관련된 설정을 모두 제거해야 한다. Spring Boot 애플리케이션에서 내장 톰캣서버를 제외시키는 방법은 간단하다. 내장톰캣 제외하기 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-tomcat pom.xml에서 으로 내장 톰캣을 제외하면 된다. 그런데 간혹 내장톰캣 제외 설정을 해도 안지워지는 경우가 있다. maven repository에서 내장톰캣을 사용하는 라이브러리들을 ..

Spring Boot에서 static 변수로 선언한 @Value 값이 NULL일 경우

Spring Boot에서는 초기화 과정에서 컴포넌트를 주입할 때, 애플리케이션에 대한 Key/Value 형태의 설정을 클래스 내 변수에 값을 넣어주는 @Value 어노테이션이 존재한다. 이러한 설정은 application.properties 설정 파일에서 다음과 같은 형식으로 관리할 수 있다.encrypt.key=1.0.2이러한 방식을 사용하여 다른 3rd party 서비스를 사용할 때 Access Key 또는 Secret Key 같은 설정을 유용하게 할 수 있다.static 변수에 대하여 @Value 사용하기@Component로 선언된 클래스에서 @Value으로 변수를 설정하여 설정파일에 선언한 값을 가져올 수 있다. 다만 static 변수에서 다음과 같이 @Value 을 사용한다면 잘못된 결과를 초래..

스프링부트 EnvironmentPostProcessor로 사용자 정의

이번 프로젝트에서 Spring Boot 애플리케이션 구동시 실행되는 기능을 만들어야 했다. EnvironmentPostProcessor 인터페이스를 활용하여 커스터마이징 환경으로 구현할 수 있었다. 이 인터페이스는 Environment 애플리케이션 컨텍스트가 올라가기 전에 애플리케이션을 사용자 정의할 수 있게 해주는 기능이다. 실제 예시를 살펴보자.사용자 정의 클래스 생성EnvironmentPostProcessor 인터페이스를 구현한 사용자 정의 클래스를 작성한다.import org.apache.commons.logging.Log; import org.springframework.boot.SpringApplication; import org.springframework.boot.env.Environmen..

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..

스프링부트 개발환경 구성하기 (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