본문 바로가기

Programing/Framework

(71)
React with Spring Boot 프로젝트 구조 잡기 React를 프론트 사이드로, Spring을 백엔드로 개발을 하려고 한다.찾아보니 스케폴딩 / 스켈레톤 (뼈대)를 구성한 것이 github에 꽤 올라와 있었다.React.js and Spring Data REST (스프링 튜토리얼) - Github위의 튜토리얼을 한국인이 따라해가면서 정리한 곳: https://greencrayon00.wordpress.com/2015/11/09/spring-react-js-튜토리얼-따라하기-2부-hypermedia/ / GithubSpring boot, react 이용한 블로그 개발 - GithubKotlin + Spring Boot + Webpack + Babel + ReactJS: https://github.com/mikaelhg/spring-boot-webpack-..
[Spring] WebMvcConfigurerAdapter가 deprecate 되었네, 해결책은? Spring 5.0이 되면서 WebMvcConfigurerAdapter가 deprecate 되었다. WebMvcConfigurerAdapter 참고이유인 즉슨 자바 8이 기본 버전(baseline)이 되면서 Java 8의 Interface의 기능 중 하나인 default method 기능을 이용하면 구지 추상 클래스를 쓰지 않아도 되기 때문이다. 그래서 인텔리제이에서는 @Deprecated 어노테이션을 보고 득달같이 뭐라고 잔소리를 한다. 잔소리는 알겠는데 왜 그러는지 모르고 있을 때는 어떻게 하라는 건지 해결책이 안떠올랐다.결국 이해를 하고 나서 아래와 같이 바꾸니 잔소리가 사라졌다.
[springboot] 기본 로깅 형식 MDC를 추가하기 위해 기본 로깅 형식을 알아야 했는데 MDC를 추가하기도 전에 이상하게 포맷이 찍혀서 작업을 진행하지 못했다. 기본 로깅형식 정보는 DefaultLogbackConfiguration 파일 혹은 spring-boot-x.y.z.jar 의 org.springframework.boot.logging.logback 아래에 default.xml에 정의 되어 있다.class DefaultLogbackConfiguration { private static final String CONSOLE_LOG_PATTERN = "%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} " + "%clr(${LOG_LEVEL_PATTERN:-%5p..
[스프링] ReloadableResourceBundleMessageSource 관련한 테스트 에러 기존에 spock 테스트 코드가 있었는데, 어느 시점부터 계속 테스트가 깨진다.해당 코드에서는 테스트 하는 코드는 다국어 지원 메세지가 지원하고 있었기에 주입을 위해 아래와 같이 ReloadableResourceBundleMessageSource를 이용하여 주입해주고 있었다. class AvailableValidatorTest extends Specification {def messageSource = new ReloadableResourceBundleMessageSource(defaultEncoding: CharEncoding.UTF_8,basenames: ["classpath:messages/web/validation-error-messages.xml","classpath:messages/web/we..
[스프링] URI 만드는 구성 요소 UriComponentsBuilder 스프링 프레임워크를 쓰고 있다면 URI를 만드는데 도움이 되는 유틸리티가 있다. org.springframework.web.util.UriComponentsBuilder스프링 3.1 부터 지원이 되었고 spring-web-x.y.z.RELEASE.jar에 포함되어 있다. 사용은 static method를 이용해서 동작할 수 있다. - fromUriString(String uri) 이후 build 패턴중 메서드 체인을 이용해서 파라메터 등을 추가할 수 있다.마지막 인스턴스를 만드는 녀석은 예상대로 build()이다.- queryParam(String name, Object... values)- build()
[Spring] 특정 타입의 객체를 Request 스코프로 받기 방법1.빈에 @Scope 어노테이션을 이용한다.예) 로그인 정보를 어디선가(예. 인터셉터)에서 넣어준다고 할 때 아래와 같이 로그인 정보를 담는 요청 스코프의 빈을 만들 수 있다.@Component @Scope(value = "request", proxyMode = ScopedProxyMode.TARGET_CLASS) public class LoginHolder { private Login login; protected void setLogin(Login login) { this.login = login; } public Login getLogin() { return login; } }실제로 스프링에서는 해당 구현을 ThreadLocal등에 map의 형태로 관리한다.자세한 것은 아래 소스코드 참고.htt..
[Spring] afterCompletion 에서 annotation으로 로그 찍기 특정 컨트롤러 클래스에서만 User-Agent를 찍고 싶었다. 그래서 어노테이션을 만들고.. import java.lang.annotation.*; /** * Indicates that an annotated class or method for logging the User-Agent information. */ @Target({ ElementType.TYPE, ElementType.METHOD }) @Retention(RetentionPolicy.RUNTIME) public @interface UserAgentLogging { }afterCompletion에서 세 번째 파라메터를 통해@Override public void afterCompletion(HttpServletRequest request, H..
[Spring] 스프링에서 정적리소스 설정하기 이클립스 플러그인으로 제공하는 spring mvc 템플릿에서는 기본적으로 정적 리소스는 resources로 설정이 되어 있다. 하지만 가끔 루트로 요청이 들어오는 /robots.txt이나 /favicon.ico 같은 요청이 있다. xml 방식의 설정을 사용한다면ref. No mapping found for HTTP request with URI [/favicon.ico] Java Configuration으로 사용한다면org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport 를 상속받는 @Configuration에 addResourceHandlers 메서드를 오버라이드 해서 추가해주면 된다.@Override protected ..