The Spring Web model-view-controller (MVC) framework is designed around a DispatcherServlet that dispatches requests to handlers, with configurable handler mappings, view resolution, locale and theme resolution as well as support for uploading files.
Spring integration을 통해_살펴본_메시징_세계Wangeun Lee
[스프링캠프 2015] Spring Integration을 통해 살펴본 메시징 세계 발표자료 입니다.
예제 소스 저장소는 프리젠테이션 안에 링크 걸어놨습니다.
감사합니다.
-------------------------------------------------------------------
우리는 늘 누군가와 소통(Communication)을 합니다. 소통을 통하여 누군가에게 일을 시키기도 하고 내가 일을 받기도 합니다. 애플리케이션도 마찬가지로 이기종간의 애플리케이션끼리 데이터로 소통을 하며 할 일을 서로 분산 처리할 상황이 발생하기도 합니다.
이런 분산 처리 이전에는 소통이 전제되어야 합니다. 애플리케이션 간 소통에 대한 고민은 선구자들에 의해 Enterprise Integration Patterns로 탄생되었으며 Spring에서도 그 패턴화의 추상화 일원으로 Spring Integration을 탄생시켰습니다.
이 강연에서는 Spring Integration을 통해 애플리케이션 간에 어떻게 쉽고 편하게(?) 소통을 할 수 있게 되었는지 살펴보며 예제와 사례를 통해 Spring Integration 입문에 도움을 주고자 합니다.
제 14회 한국 자바 개발자 컨퍼런스의 커뮤니티 세션에서 공유한 `overview of spring4` 의 발표 자료
스프링 프레임워크는 2004년에 출시된 이후 지금까지 많은 변화를 겪어왔습니다. 기억에 남아 있는 굴직한 변화를 더듬어 보면 버전 2.0은 XML 네임스페이스와 AspectJ 지원, 버전 2.5부터 애노테이션을 활용한 프로그래밍 기능이 추가되었습니다. 그리고 버전 3.0으로 올라가며 Java 5+ 기반으로 코드 구조가 바뀌고 자바 코드 기반 설정 기능이 추가되었습니다. 2013년 12월 13일에 버전 4.0 발표이 발표되었습니다. 주목할 변화는 바로 Java 8 지원과 제거 대상(@Deprecated)으로 선언되었던 많은 클래스와 메소드들이 삭제되었다는 것입니다. 이 외에도 많은 변화가 있습니다. 이번 시간에는 조금 높은 곳에서 내려다보는 느낌으로 무엇이 추가되었고, 어떤게 바뀌었는지 살펴보려고 합니다.
예제코드 : https://github.com/arawn/overview-of-spring4
The Spring Web model-view-controller (MVC) framework is designed around a DispatcherServlet that dispatches requests to handlers, with configurable handler mappings, view resolution, locale and theme resolution as well as support for uploading files.
Spring integration을 통해_살펴본_메시징_세계Wangeun Lee
[스프링캠프 2015] Spring Integration을 통해 살펴본 메시징 세계 발표자료 입니다.
예제 소스 저장소는 프리젠테이션 안에 링크 걸어놨습니다.
감사합니다.
-------------------------------------------------------------------
우리는 늘 누군가와 소통(Communication)을 합니다. 소통을 통하여 누군가에게 일을 시키기도 하고 내가 일을 받기도 합니다. 애플리케이션도 마찬가지로 이기종간의 애플리케이션끼리 데이터로 소통을 하며 할 일을 서로 분산 처리할 상황이 발생하기도 합니다.
이런 분산 처리 이전에는 소통이 전제되어야 합니다. 애플리케이션 간 소통에 대한 고민은 선구자들에 의해 Enterprise Integration Patterns로 탄생되었으며 Spring에서도 그 패턴화의 추상화 일원으로 Spring Integration을 탄생시켰습니다.
이 강연에서는 Spring Integration을 통해 애플리케이션 간에 어떻게 쉽고 편하게(?) 소통을 할 수 있게 되었는지 살펴보며 예제와 사례를 통해 Spring Integration 입문에 도움을 주고자 합니다.
제 14회 한국 자바 개발자 컨퍼런스의 커뮤니티 세션에서 공유한 `overview of spring4` 의 발표 자료
스프링 프레임워크는 2004년에 출시된 이후 지금까지 많은 변화를 겪어왔습니다. 기억에 남아 있는 굴직한 변화를 더듬어 보면 버전 2.0은 XML 네임스페이스와 AspectJ 지원, 버전 2.5부터 애노테이션을 활용한 프로그래밍 기능이 추가되었습니다. 그리고 버전 3.0으로 올라가며 Java 5+ 기반으로 코드 구조가 바뀌고 자바 코드 기반 설정 기능이 추가되었습니다. 2013년 12월 13일에 버전 4.0 발표이 발표되었습니다. 주목할 변화는 바로 Java 8 지원과 제거 대상(@Deprecated)으로 선언되었던 많은 클래스와 메소드들이 삭제되었다는 것입니다. 이 외에도 많은 변화가 있습니다. 이번 시간에는 조금 높은 곳에서 내려다보는 느낌으로 무엇이 추가되었고, 어떤게 바뀌었는지 살펴보려고 합니다.
예제코드 : https://github.com/arawn/overview-of-spring4
배민찬(https://www.baeminchan.com) 서비스의 백엔드 시스템 중 일부가 지난 1년간 어떤 고민과 아이디어, 결과물을 만들어냈는지 공유하려고 합니다. 발표 중 언급되는 용어나 도구에 대해 일반적인 정의나 간단한 설명은 언급되나 자세히 다루지 않습니다. 사용된 도구들로 어떻게 이벤트 기반 분산 시스템을 만들었는지에 대한 이야기가 중심입니다.
스프링군살없이세팅하기(The way to setting the Spring framework for web.)EunChul Shin
깔끔하게 스프링 프레임워크 세팅하는 것에 대한 이야기 입니다.
군살없이 프레임워크를 세팅한다는 의미와 이유, 그리고 스프링 기본 설정 및 설정들의 역할에 대해서 정리해 보았습니다.
This presentation is about Spring framework.
I want to talk about the way to setting the spring framework as tidy in this presentation.
spring.io 레퍼런스(sagan project)를 통해서 배우는 spring 개발사례에 대해서 발표하고 정리한 프레젠테이션입니다. 작년에 SpringOne에서 발표된 inside spring.io 내용과 저의 개인적인 분석을 통해서 내용을 정리했습니다.
'입문자' 분들을 대상으로 정리했기 때문에 가능한한 간결하고 직관적으로 내용들을 표현했으며 깊게 들어가는 내용들은 거의 생략을 하였습니다.
자세한 내용들을 원하시면 프레젠테이션 중간중간에 관련 link를 첨부하였으니 같이 보시면은 도움이 되실것 같습니다.
[Spring Camp 2013] Java Configuration 없인 못살아!Arawn Park
Spring Camp 2013 / Track B Session 2
Java Configuration은 Spring 3.0과 함께 등장했습니다. 초기에는 '이게 뭐야?' 싶은 정도로 제대로된 모습을 갖춘 상태가 아니었습니다. 뒤돌아보면 스프링 1.0 시절의 XML을 보는것 같았지요. (웃음)
하지만 3.1이 발표되며 상황이 바뀌었습니다. XML 설정을 대체할 정도로 성장했을 뿐만 아니라 더 많은 것들을 할 수 있게 되었거든요.
이 시간에는 Spring을 사용하는 대표적인 예제 PetClinic(https://github.com/arawn/spring-petclinic)을 Java Configuration으로 재구성한 모습을 코드로 보여드립니다. 그리고 제가 보는 Java Configuration의 매력요소를 공유합니다.
배민찬(https://www.baeminchan.com) 서비스의 백엔드 시스템 중 일부가 지난 1년간 어떤 고민과 아이디어, 결과물을 만들어냈는지 공유하려고 합니다. 발표 중 언급되는 용어나 도구에 대해 일반적인 정의나 간단한 설명은 언급되나 자세히 다루지 않습니다. 사용된 도구들로 어떻게 이벤트 기반 분산 시스템을 만들었는지에 대한 이야기가 중심입니다.
스프링군살없이세팅하기(The way to setting the Spring framework for web.)EunChul Shin
깔끔하게 스프링 프레임워크 세팅하는 것에 대한 이야기 입니다.
군살없이 프레임워크를 세팅한다는 의미와 이유, 그리고 스프링 기본 설정 및 설정들의 역할에 대해서 정리해 보았습니다.
This presentation is about Spring framework.
I want to talk about the way to setting the spring framework as tidy in this presentation.
spring.io 레퍼런스(sagan project)를 통해서 배우는 spring 개발사례에 대해서 발표하고 정리한 프레젠테이션입니다. 작년에 SpringOne에서 발표된 inside spring.io 내용과 저의 개인적인 분석을 통해서 내용을 정리했습니다.
'입문자' 분들을 대상으로 정리했기 때문에 가능한한 간결하고 직관적으로 내용들을 표현했으며 깊게 들어가는 내용들은 거의 생략을 하였습니다.
자세한 내용들을 원하시면 프레젠테이션 중간중간에 관련 link를 첨부하였으니 같이 보시면은 도움이 되실것 같습니다.
[Spring Camp 2013] Java Configuration 없인 못살아!Arawn Park
Spring Camp 2013 / Track B Session 2
Java Configuration은 Spring 3.0과 함께 등장했습니다. 초기에는 '이게 뭐야?' 싶은 정도로 제대로된 모습을 갖춘 상태가 아니었습니다. 뒤돌아보면 스프링 1.0 시절의 XML을 보는것 같았지요. (웃음)
하지만 3.1이 발표되며 상황이 바뀌었습니다. XML 설정을 대체할 정도로 성장했을 뿐만 아니라 더 많은 것들을 할 수 있게 되었거든요.
이 시간에는 Spring을 사용하는 대표적인 예제 PetClinic(https://github.com/arawn/spring-petclinic)을 Java Configuration으로 재구성한 모습을 코드로 보여드립니다. 그리고 제가 보는 Java Configuration의 매력요소를 공유합니다.
어느덧 스무살이 된 자바. 좋든싫든 프로그래밍의 세계에 몸담고 있는 이상 부딪히지 않을 수 없는 언어인데요, 이 자바에 대한 올바른 모습의 이해화 앞으로 나아가야 할 방향을 모색해본다는 의미에서 "모던 자바의 역습"이라는 타이틀로 실시한 온라인 세미나의 슬라이드 자료입니다.
진행자: 김대우(http://lekdw.blogspot.kr/)
정도현(http://moreagile.net)
이번 세미나는 게임개발자이신 김대우님을 모시고 진행하게 되었는데요 자바 언어와 관련 하여 다음과 같은 주제로 두시간에 걸쳐 발표를 진행합니다.
- 간단히 살펴보는 자바20년의 발자취
- 자바를 둘러싼 진실 혹은 거짓(성능,생산성,품질)
- SI영역 이외에서 자바의 가치
- 모던자바의 역습: 자바8과 함수형 프로그래밍
- 자바 개발의 새로운 패러다임들
스트림 API는 람다 표현식을 적극적으로 활용해서 만들어진 자바의 새로운 API 입니다.
스트림 API를 통해서 자바에서도 맵/리듀스 방식으로 대량의 데이터를 순차 또는 병렬 처리를 할 수 있게 되었는데요, 이번 발표를 통해 스트림 API가 무엇인지- 어떻게 써먹는지에 대해 가볍게 씹고 뜯고 맛보고 즐기셨으면 좋겠습니다. :)
예제코드 : https://github.com/arawn/jdk8-stream-api
Spring framework 3.2 > 4.0 — themes and trendsArawn Park
제 13회 한국 자바 개발자 컨퍼런스 커뮤니티 세션에서 공유한 `Spring Framework 3.2 > 4.0 — Themes and Trends` 의 발표 자료
Spring Framework 3.1에 공개된 후 약 1년만에 Spring Framework 3.2개 공개되었습니다.
3.2에는 비동기 요청 처리와 향상된 JAVA 7 지원, Spring MVC Test framework 합류 등으로 자바 엔터프라이즈 애플리케이션을 개발하는데 있어 편리함과 함께 세련미를 더해주고 있습니다.
최근 Spring Framework 핵심 개발자인 Juergen Hoeller는 springsource blog에 "NEXT STOP: SPRING FRAMEWORK 4.0"라는 제목으로 앞으로 Spring Framework에 어떤 변화들이 찾아올지에 대해서 미리 귀뜸을 해주었습니다.
이 시간을 통해 Spring Framework 3.2의 새로운 기능들과 개선사항을 살펴보고, Spring Framework의 미래 모습에 대해 이야기를 나눠보는 자리를 만들고자 합니다.
Spring Framework 4.0과 4.1의 주요 업데이트 내용을 정리했습니다. 그리고, Spring I/O 2015 | The conference 에서 공개된 4.2의 소식들을 모아보았습니다. :)
ps. 제가 웬만하면 자료는 한글로 바꾸는 편인데... 이번에는 시간이 너무 부족해서 대부분 영어를 그대로 사용했네요. 다음에 기회가 되면 한글화시키는걸로...
Github repository: https://github.com/ihoneymon/rocking-the-gradle
Youtube 영상: https://www.youtube.com/watch?v=5IAahr4TU5Y
rocking-the-gradle 이라는 디렉토리를 만들고
setupBuil 자바 프로젝트로 초기화 하고
task 를 작성-실행하고
test 를 작성-실행하고
멀티프로젝트(rocking-core + rocking-web)로 나누고
의존관계를 선언하고 필요한 의존성 라이브러리를 추가하는 과정을 설명한다.
스프링 기본설정을 추가하고
젠킨스에 job을 등록해서 배포하는 과정을 추가하면
그럭저럭 쓸만한 gradle tutorial이 될 수 있지 않을까?
Adied 2014, 봄싹 세미나에서 발표한 `Resource Handling in Spring MVC`의 발표자료입니다.
주요 내용으로 Spring MVC에서 정적 자원(css, js, etc)을 다루는 방법을 다루고 있습니다.
데모 코드 : https://github.com/arawn/resource-handling-in-springmvc
WebSocket and STOMP for real-time chat.pptxfighter0628
WebSocket와 STOMP은 웹 애플리케이션에서 실시간 통신을 위한 기술로, 주로 채팅 기능에 사용됩니다. WebSocket은 단일 TCP 연결을 통해 전이중 통신 채널을 제공하는 통신 프로토콜입니다. STOMP는 클라이언트와 서버 간 메시지를 교환하기 위한 간단한 텍스트 기반 프로토콜로, WebSocket 또는 다른 전송 프로토콜 위에서 작동합니다. WebSocket은 통신 채널을 제공하고, STOMP는 메시징의 표준화된 형식과 기능을 제공하여 웹에서 실시간 채팅 애플리케이션을 구축하는 데 주로 함께 사용됩니다
2. 발 표 자 소 개
•이 름 : 김 지 헌 (== honeymon)
ihoneymon@gmail.com
http://honeymon.io
이 노 트 리 (http://innotree.com) 근 무
KSUG 일 꾼 단 소 속 잡무 수 행
개 발 자 …
종 합레 저 스 포 츠 인 을 표 방
3. Spring framework
● 2003, JDK 1.4
● https://spring.io/blog/2004/03
/24/spring-framework-1-0-
final-released
● Annotation, REST, SPAs,
WebSocket 가 요 구 되 기 전
19. Jackson 이 야 기
• Jackson: JSON & XML 조 작
• Jackson2ObjectMapperBuilder 를 이 용 해 서
ObjectMapper 인 스 턴 스 를 생 성
• LastestJackon integration improvements
in spring
– @JsonView: Jackson's Serialization View
– JSONP: @ResponseEntity & ResponseEntity
20. @RequestMapping
• java.util.Optional(JDK 8) 지 원
• ResponseEntity/RequestEntity buider-style method
• MvcUriComponentBuilder를 사 용 하 여 다 른 컨 트 롤 러 의 메
서 드 를 호 출 할 수 있 는 URI 생 성
• @ModelAttribute 사 이 의 의 존 성 부 여
21. 정 적 자 원 지 원
• ResourceHttpRequesthandler < 4.1
• ResourceResolver, ResourceTransformer, ResourceUrlProvider 4.1+
• 컨 텐 츠 기 반 해 시 를 가 진 Versioned URL
– e.g. "/css/font-awesome.min-7fbe76cdac.css"
• 보 다 자 세 한 사 항은 !!
– Resource Handling Spring MVC 4.1 - SpringOne 2014
– Resource handling Spring MVC - Adieu 2014, 봄 싹(박 용 권 )
22. Groovy markup template
• HTML 템 플 릿 용 DSL을 Groovy 로 컴 파일
• Groovy 의 강력 한 힘 으 로 !
• See GroovyMarkup View
Javascript Templating + v4.2
23. MVC 설 정
• ViewResolver 등 록 지 원
• ViewController 설 정
• Path matching 설 정
24. 비 동 기 HTTP 요 청
• Servlet 3.0+ Async Request
• 클 라 이 언 트 에 이 벤 트 푸 시 , 긴 연 산
• 상 당 히 쉽 게 할 수 있 다 .
• 조 금 더 복 잡한 상 황에 대 해 서 는 구 현 이 어
려 움
25. Web Messaging Architecture
• WebSocket -> Low-level transport
• SockJS -> fallback options
• STOMP -> application-level protocol
30. HTTP Streaming
• New return type ResponseBodyEmitter
• Write a series of Objects to response body
• via HttpMessageConverter
• Also works with ResponseEntity
31. HTTP Streaming Example
@RequestMapping
public ResponseBodyEmitter handle() {
ResponseBodyEmitter emitter = new ResponseBodyEmitter();
// …
return emitter;
}
// Later from some other thread
emitter.send(new Foo());
emitter.send(new Bar());
emitter.complete()
32. HTTP Streaming: SSE-style
• SseEmitter extends ResponseBodyEmitter
• ResponseBodyEmitter와 같은 동 작 을 하 지
만 다 른 점 하 나 !
– SSE-style: W3C Server-Send Event
specifications
33. Server-sent events example
@RequestMapping
public SseEmitter handle() {
SseEmitter emitter = new SseEmitter();
// ...
return emitter;
}
// Later from some other thread
emitter.send(event().name("foo").data(new Foo()));
emitter.send(event().name("bar").data(new Bar()));
emitter.complete();
34. HTTP Streaming: Directly to Response
@RequestMapping
public StreamingResponseBody handle() {
return new StreamingResponseBody() {
@Override
public void writeTo(OutputStream out) {
// ...
}
}
}
35. HTTP caching update
• CacheControl builder
• Configurable in various places
– WebContentGenerator/Interceptor
– ResourceHttpRequestHandler
– ResponseEntity
• Improved ETag/Last-Modified support in
WebRequest
36. CORS support
• 계 층 적 인 접 근
• 세 밀 한 설 정
– @CrossOrigin 컨 트 롤 러 에 사 용
• URL 패 턴 을 기 반 으 로 한 전 역 설 정
37. How CORS is supported
• AbstractHandlerMapping 에 의 해 생 성
• 하 위 클 래 스 에 대 한 CORS 메 타 데 이 터 제 공
– @CrossOrigin
– CorsConfigurationSource
• AbstractHandlerMapping 안 에
CorsProcessor 설 정
– CORS 체 크 수 행 , 응 답 헤 더 설 정
39. Javascript View Templating
• Server and Client-side rendering
– using same template engine(e.g. React)
• `ScriptTemplateView`, `ViewResolver`
– built on Nashorn(JDK 1.8)
• 서 버 에 서 초 기 화해 두 고 , 서 버 에 서 가 져 온
코 드 를 가 지 고 클 라 이 언 트 사 이 드 에 서 랜
더 링
다 음 세 션 !! + 정 성 용 Isomorphic!!
40. MISC == 기 타 등 등
• 정 적 자 원 에 대 한 byte-range 요 청 지 원
• @ExceptionHandler 메 서 드 에 메 서 드 인 자
로 HandlerMethod 사 용
• MvcUriComponentsBuilder custom baseUri
41. STOMP/WebSocket
• @ControllerAdvice 기 반 으 로 메 서 드 전 역 에
@Exceptionhandler 적 용 가 능
• @SendTo/SendToUser Destination value
placehodler 정 의 : @DestinationVariable
• 다 중 앱 서 버 사 이 에 서 사 용 자 목 적 지 사 용
• SockJS 내 에 서 CORS 향상
42. Simple Broker(STOMP over WebSocket)
• HeartBeat support
• SpEL-based message selector
SUBSCRIBE
destination:/app/greetings
selector:headers.foo == ‘bar’
43. STOMP client
• 자 바 를 사 용 하 여 WebSocket 혹 은 TCP 접 근
• 테 스 트 에 유 용 함
• 서 버 사 이 드 에 서 STOMP broker 접 근
44. 정 리
• 설 정 의 응 집 도 를 높 이 고 !
• 세 부 설 정 은 진 입 지 점 에 서 도 가 능 !
• 웹 소 켓 의 기 능 을 HTTP에 서 도 !
• 조 금 더 ! 빠르 게 ! 쉽 게 !
46. 발 표 자 료
• 예 제 :
– https://github.com/ihoneymon/rocking-the-
spring-4x-web-application
47. 참 조 자 료
• Spring Framework - wikipedia
• 4.0.0 release
• Spring 4 Web applications
• Spring Framework 4.0 Web Applications - SpringOne 2014
• Overview of Spring 4.0 - 박 용 권 , KSUG
• Spring MVC 4.2: New and Noteworthy
• Workshop - From Spring 4.0 To 4.2
• Exception handling in Spring MVC
• Spring - Modify response headers after controller processing
• Using WebSocket to build an interactive web application
• CORS support in Spring Framework
• Isomorphic templating with Spring Boot, Nashorn and React
• Script template
• HTTP Streaming