Spring Framework: 317개의 글
오늘 부터 시간이 나는대로 스프링 프레임워크에서 처리해주는 기능들이 어떻게 동작하는지 소스 리뷰를 하기 시작했다.@RequestBody와 @ResponseBody가 어떻게 동작하는지 궁금해서 spring-web 프로젝트를 조금 살펴보다가 HandlerMethodArgumentResolverComposite 클래스라는 놈을 만나게되었는데, Composite라는 패턴을 사용했다. 사실 Composite 패턴이라는걸 예전에 책을 통해 한번 본거 같은 기억이 나지만 잘 와닿지 않았는데 스프링 소스를 보니 이해가 잘된다. 먼저 Composite 패턴에 대해서 설명은 생략하겠다. 참고 Diagram HandlerMethodArgumentResolver는 Request 요청에 대한 파라미터 데이터에 대해 컨트롤 할 ..
자바에서 요일(day of week)을 구하는 간단한 방법(원문:http://www.leveluplunch.com/java/examples/get-day-of-week/) Java CalendarCalendar cal = Calendar.getInstance();cal.set(Calendar.MONTH, Calendar.APRIL);cal.set(Calendar.DAY_OF_MONTH, 4);cal.set(Calendar.YEAR, 2016);int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);assertEquals(Calendar.FRIDAY, dayOfWeek); Java 8LocalDate date = LocalDate.of(2016, Month.APRIL, 4);Da..
스프링 비동기와 자바8의 CompletableFuture Spring Async and Java’s 8 CompletableFuture[원문: https://www.javacodegeeks.com/2016/04/spring-async-javas-8-completablefuture.html] 아래는 '비동기' 유저찾기 메소드의 예제의 구현이다. (전체 소스는 여기)1@Async2public Future findUser(String user) throws InterruptedException {3 System.out.println("Looking up " + user);4 User results = restTemplate.getForObject("https://api.github.com/users/" + u..
스프링에서 @Async로 비동기처리하기 @Async in Spring[원문: http://www.baeldung.com/spring-async] 1. 개요 Overview이 글에서 스프링의 비동기 실행 지원asynchronous execution support과 @Async annotation에 대해 살펴볼 것이다. 간단히 설명하면, @Async 어노테이션을 빈bean에 넣으면 별도의 쓰레드에서 실행되는 것이다. 이를테면 호출자는 호출된 메소드가 완료될 때까지 기다릴 필요가 없다. 2. Async 기능 켜기 Enable Async Support자바 설정Java configuration으로 비동기 처리enabling asynchronous processing를 쓰려면 간단히 설정 클래스에 @EnableAs..
스프링부트 : REST어플리케이션에서 예외처리하기(원문소스: http://www.ekiras.com/2016/02/how-to-do-exception-handling-in-springboot-rest-application.html) 기억할 점스프링 부트 어플리케이션에서 예외처리하는 방법은 3가지다: 전역 처리 Global Level using - @ControllerAdvice컨트롤러단에서 처리 Controller Level using - @ExceptionHandler 메소드단위 처리 Method Level using - try/catch REST 어플리케이션에서 예외처리하기 예외처리를 테스트하기위에 3가지 예외를 만들것이다: 모든 커스텀 예외의 부모가 될 BaseException.Base Except..
Global Exception Handling for Spring-Boot Application Using @ControllerAdvice @ControllerAdvice public class GlobalExceptionHandling { protected Logger logger; public GlobalExceptionHandling() { logger = LoggerFactory.getLogger(getClass()); } @ResponseBody public ResponseEntity handleUnauthenticationException(Exception e) { return errorResponse(e, HttpStatus.BAD_REQUEST); } @ExceptionHandler({Da..
Exception Handling in Spring MVC(원문소스: HTTPS://SPRING.IO/BLOG/2013/11/01/EXCEPTION-HANDLING-IN-SPRING-MVC)Spring MVC는 예외처리를 위한 몇가지 훌륭한 접근법을 제공해주지만 Spring MVC를 가르칠때 학생들이 종종 헷갈려하거나 불편해한다는 것을 알았다.이 글에서 이를 위해 사용가능한 다양한 옵션을 보여줄 것이다. 우리의 목표는 가능한한 컨트롤러 메소드에서 명시적으로 예외처리를 하지 않는 것이다. 이들의 횡단관심사cross-cutting concern는 전용코드에서 별도로 처리하는 더 나은 방식을 제공해준다.3가지 옵션이 있다: 예외별, 컨트롤러별, 전역별 per exception, per controller or..
Spring Boot And OAuth2(원문소스: https://spring.io/guides/tutorials/spring-boot-oauth2/) Authorization 서버 돌리기 Hosting an Authorization Server이 섹션에서 우리는 우리가 만들 앱을 여전히 페이스북과 Github을 사용하여 인증이 가능하지만 스스로 억세스 토큰을 만들 수 있는 완전무결fully-fledged한 OAuth2 인가서버Authorization Server로 만들도록 수정할 것이다. 이들 토큰은 이후 보호된secure 백엔드 리소스에서 사용되거나 똑같은 방식으로 보호되고 있는 다른 어플리케이션과의 SSO를 하는데 쓸 수 있다.인증 설정을 정리하기 Tidying up the Authenticatio..
Spring Boot And OAuth2 (원문소스: https://spring.io/guides/tutorials/spring-boot-oauth2/) 목 차1-1) 페이스북으로 싱글사이온하기 Single Sign On With Facebook2-1) 기본 페이지 추가하기 Add a Welcome Page2-2) 로그아웃 버튼 추가하기 Add a Logout Button3-1) OAuth2 클라이언트 수동설정하기 Manual Configuration with OAuth2 Client3-2) Gibhub으로 로그인하기 Login with Github4-1) Authorization 서버 돌리기 Hosting an Authorization Server4-2) 비인증 사용자를 위한 에러페이지 추가하기 Add..
Spring Boot And OAuth2(원문소스: https://spring.io/guides/tutorials/spring-boot-oauth2/)기본페이지 추가하기 Add a Welcome Page이 섹션에서 우리는 '페이스북에 로그인하기'라는 명시적 링크를 추가함으로서 방금 만든 simple앱을 수정할 것이다. 즉시 리다이렉트되는 대신, 새 링크는 홈페이지에 보여져 사용자가 로그인을 할지 안할지 선택할 수 있게 된다. 사용자가 링크를 클릭했을 때만 인증된 컨탠트가 보여질 것이다.홈페이지의 조건적 컨탠트 Conditional Content in Home Page어떠한 컨탠트를 사용자가 인증했을 때 또는 우리가 서버측 랜더링(이를테면 Freemaker또는 Thymeleaf)을 사용하지 않을지 조건적으..