반응형

스프링 7

[Spring] spring-boot 2.1(SpringFramework 5.1)에서 없어진 기능, JSONP 간단하게 구현하기

JSONP 처리를 기본 기능으로 제공하였지만, 스프링부트 2.1(스프링프레임워크 5.1)부터 없어졌다. 이미 Deprecated 처리되어 언제가는 없어질 것을 예상했지만, 담당하고 있는 시스템에서는 아직 JSONP가 필요하였다. 없어진 AbstractJsonpResponseBodyAdvice.java 소스: https://github.com/spring-projects/spring-framework/blob/5.0.x/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/annotation/AbstractJsonpResponseBodyAdvice.java spring-projects/spring-framework Spring Fra..

IT/PROGRAMMING 2019.06.09

[Spring] spring-vault에서 @VaultPropertySource 여러개 사용하면 안되는 이유

스프링 기반의 어플리케이션을 개발할 때, 환경설정으로 보안정보를 다루기 위하여 Vault를 이용하게 된다. 일반적으로 가장 간단하게 Vault를 이용하는 방법은 @VaultPropertySource 또는 @VaultPropertySources 어노테이션을 사용하는 것이다. import org.springframework.context.annotation.Configuration; import org.springframework.vault.annotation.VaultPropertySource; @Configuration @VaultPropertySource(value = { "secret/hippolab/wallet1", "secret/hippolab/wallet2", "secret/hippolab/wa..

IT/PROGRAMMING 2019.04.19

[Spring] Hibernate에서 "Could not build ClassFile" 발생하는 오류 해결

spring-boot 버전 1.4.2에서 현재 1.X 버전 최고인 1.5.19로 업데이트하였다. 한 프로젝트에 Maven 모듈로 여러 어플리케이션이 존재하는 구성이다. 2개 어플리케이션만 제외하고 나머지 어플리케이션은 잘 수행된다. 이 2개 어플리케이션에서는 처음 로딩 중 아래와 같은 예외가 발생한다. 더 특이한 것은 IDE에서 바로 실행시키면(로컬환경) 잘 된다. 서버환경에서만 안된다. 환장하겠다.Exception in thread "main" java.lang.ExceptionInInitializerErrorat com.hippolab.MyTopologyRunner.getApplicationContext(MyTopologyRunner.java:39)at com.hippolab.AbstractTopol..

IT/PROGRAMMING 2019.03.10

[Spring] spring-boot 1.5.X 부터 spring-kafka 사용할 수가 있네요.

스프링에서 @KafkaListener 어노테이션을 사용해서 간단하게 카프카 토픽을 바로보는 consumer를 작성하려면 spring-kafka 라이브러리가 필요하다. spring-boot를 적용한 환경에서 Maven pom.xml에 아래와 같이 dependency를 걸어주면 된다. org.springframework.kafka spring-kafka그런데 라이브러리가 추가가 안되서 확인해보니, spring-boot 1.5.X 이후부터 spring-kafka를 사용할 수 있었다. 직접 필요한 라이브러리들을 모두 추가하는 방법으로 spring-boot 1.4.X에서도 사용할 수 있는 것으로 보이지만, 그러고 싶지는 않았다. 어쩔수 없이 그냥 스프링부트 버전을 올렸다. 현재 최신버전인 spring-boot 2..

IT/PROGRAMMING 2019.03.06

[Spring] spring-boot 버전 1.X와 2.X에서 Page 객체를 ObjectMapper(Jackson) 사용시 차이점

최신 spring-boot 릴리즈 버전은 2.1.3 이다. 특별한 사유가 없는한 새로운 프로젝트를 시작한다면 이 버전으로 셋팅할 것이다. 하지만 2~3년전에 만들어진 프로젝트는 spring-boot 버전 1.X를 사용했을 것이다.필자도 수년전에 개발하고 운영중인 시스템은 spring-boot 1.4.X가 적용되어 있으며, spring-data의 JPA로 DB에서 Pageable을 이용한 페이징과 정렬 처리를 하는 기능이 많다. 이 기능의 반환타입은 Page이며 실제 구현체는 PageImpl로 되어있다. 이 Page 객체를 @RestController의 응답값으로 곧바로 넘기고, ObjectMapper(Jackson)를 통하여 JSON 문자열로 변환된다.최근 spring-boot 1.4.X를 2.X로 버전..

IT/PROGRAMMING 2019.02.19

[Spring] 웹어플리케이션의 Whitelabel 오류 페이지 비활성화

스프링으로 웹어플리케이션을 작성하면 기본적인 오류화면은 아래와 같이 "Whitelabel Error Page"가 보일것이다. 이 오류화면을 없애고 싶다면 아래와 같이 application.properties 파일에 설정을 추가하면 된다. server.error.whitelabel.enabled=false 위 설정은 ErrorProperties.Whitelabel로 바인딩되는데, 기본값은 true 이다.package org.springframework.boot.autoconfigure.web; . . . public class ErrorProperties { ... public static class Whitelabel { /** * Whether to enable the default error page..

IT/PROGRAMMING 2019.02.19

[Spring] @RequestMapping의 wildcard 패턴 **의 값을 배열로 얻기

스프링 프레임워크를 이용하여 컨트롤러에 패턴을 등록하면 다양한 URI로 매핑시킬 수 있다.이때 와일드카드(wildcard)를 자주 사용하게 되는데 기본적으로 ?, *, ** 가 있다.아래는 스프링 문서 설명이다. ※ 출처: Spring Web MVC - Web on Servlet Stack (https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html) 또한, {XXXXX}과 @PathVariable 어노테이션을 이용하여 URI의 특정부분을 변수에 할당할 수도 있다. 그리고 정규표현식(regular expression)도 지원한다. 가끔 매핑 패턴을 /path1/path2/** 처럼 여러개의 경로를 지원할 필요가 있는데, 단..

IT/PROGRAMMING 2019.02.09
반응형