일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- reactive
- 공유기 서버
- 서버운영
- Spring Batch
- ipTIME
- spring reactive
- 웹 스터디
- 웹앱
- 웹 커리큘럼
- reactor
- Spring Framework
- reactor core
- Today
- Total
목록Spring (48)
Hello World
Framework 의 늪웹 기술을 공부하지 않았던 나에게 항상 JSP, PHP, ASP 이런 것들은 탐험 가능하지만 재미없을 것 같은 그런 곳 ㅠ 그러다 올해 8월부터 갑자기 1년 반동안 하지 않던 코딩을 다시 시작하고 웹 기술을 공부하면서, Java를 다시 손에 쥐니 눈앞에 있는게 JSP 다들 아시겠지만 JSP 를 공부하다 보면 항상 처음에 마주치는 관문이 있습니다. Servlet 은 무엇인가, JSP랑 뭐가 다르지? 어? 인터넷 뒤져보면 같이 쓴다는데, Servlet 만으로도 페이지를 만들고, JSP 만으로도 되네. 응? 근데 Model 1은 뭐고 Model 2 는 무엇이지? MVC? Spring이 좋다던데 이건 또 뭐냐. 이렇게 제대로 공부하지도 못하고 끝 없이 이어져 나오는 프레임워크의 늪에 빠져..
1. HATEOAS(Hypermedia As The Engine Of Application State) HATEOAS는 RESTful API를 사용하는 클라이언트가 전적으로 서버에 의해 동적으로 상호작용을 할 수 있다. 쉽게 말하면 클라이언트가 서버에 요청시 서버는 요청에 의존되는 URI를 Response에 포함시켜 반환한다. 예를들면 사용자정보를 입력(POST)하는 요청 후 사용자를 조회(GET), 수정(PUT), 삭제(DELETE)할 수 있는 URI를 동적으로 알려주게 되는 것이다. 이렇게 동적으로 모든 요청에 의존되는 URI 정보를 보여준다면 아래와 같은 장점이 있을 것이다.요청 URI정보가 변경되어도 클라이언트에서 동적으로 생성된 URI를 사용한다면, 클라이언트 입장에서는 URI 수정에 따른 코드..
원문: http://www.jayway.com/2015/05/31/scaling-out-with-spring-session/Stateless 아키텍쳐는 근 몇년간 타당한 이유로 꾸준히 인기가 올라왔다. 하지만 stateful 세션기반의 어플리케이션도 꾸준히 중요한 역할을 이어왔다. 예를 들어 더 나은 보안을 위해 CSRF 토큰이 이슈될때처럼. 낮은 부하의 단일 서버를 배포할 때, 세션관리는 당신이 합리적인 타임아웃 유효기간을 사용하고 세션에 많은 양의 데이터를 저장하지 않는 것처럼 매우 직관적이다. 문제는 스케일 아웃하기 더 힘들다는 것이다 각각의 요청은 아마 다른 서버에 있을 지도 모르는 그에 상응하는 세션과 함께 묶여져야하기 때문이다. 이를 극복하기 위해, 서버 공급자들은 서버간 다양한 종류의 세션 ..
서론Spring에서 RestTemplate을 사용하면 간단하게 REST 서비스 요청을 쉽게 처리할 수 있다. RestTemplate 모듈이 Spring 에 포함되고 난 이후 Apache HttpClient 등 다른 외부 라이브러리를 사용하지 않고 Spring에서 제공하는 것 만으로도 훨씬 효율적으로 개발할 수 있다. RestTemplate는 이름에서도 느껴지듯 REST 요청을 하는데 최적화 되어 있는 Http Request Template이라고 생각하면된다. JSON 형태의API를 요청하여 객체로 매핑하거나, 객체를 서버로 전송할 때 객체를 쉽게 JSON 형태로 전송할 수 있는 기능을 가지고 있다. 만약 Spring 컴포넌트 안에 Http Request 요청을 하는데 JSON 타입의 API 요청이 아닐 ..
서론우리는 며칠간에 걸쳐 Spring Boot로 Spring 기반 REST 서비스와 템플릿 뷰를 사용하여 Multipart Form data를 사용하기 위한 컨트롤러를 구현하는 방법을 살펴보았다. 또한 컨트롤러를 테스트하기 위해서 MockMvc를 사용하여 짧은 코드로 간단하게 Spring 테스트 프레임워크에서 URL을 요청하여 컨트롤러를 테스트하는 방법도 살펴보았다.Spring 기반 프로젝트를 진행하면 컴포넌트 내부에서 URL을 요청해야하는 경우가 있다. 이전에는 Apache의HttpClient 라이브러리를 포함시켜 Http Request를 컴포넌트 내부에서 사용했지만 최근 Spring에서는 Http Request 요청을 간단하게 사용할 수 있도록 SpringTemplate라는 모듈을 포함하고 있다. 이..
New Article title: content: 이제 ArticlesControllers에 추가한 HTML 뷰를 보여주기 위한 메소드를 테스트하기 위해서 src/test/java/{패키지명}/ArticlesControllerTests.java에 테스트를 추가한다. HTTP Get으로 /articles/new 를 요청하게 되면 위의 HTML 내용이 렌더링된 컨텐츠타입이 text/html인 HTML 페이지가 보여야하고 그 페이지 안에 소스코드가 있어야하기 때문에 테스트는 다음과 같이 작성이 되었다.한가지 테스트에서 중요한 점은 기존의 REST 서비스를 위해 뷰 템플릿 없는 컨트롤러 테스트를 진행할 때는 테스트 환경을 standardaloneSetup() 메소드로 컨트롤러의 MockMvc를 만들어서 테스를 ..
서론Spring 프로젝트를 진행할 때 외부에서 데이터를 로드할 경우가 종종 있다. 가장 쉽게는 Spring Boot에서 사용하는 Configuration Porperty를 로드하는 것이다. Spring Boot는 기본적으로 application.properties 파일을 추가하면 자동으로 Common application properteis 로드하여 프로퍼티 값을 적용할 수 있다. 하지만 자바의 Properties 의 파일의 사용에는 표현의 한계가 있기 때문에 최근에는 Properties를 YAML을 많이 사용하고 있다. Spring Boot에서는 SnakeYAML을 포함하고 있어서 쉽게 외부 파일을 YAML으로 작성하여 쉽게 로드하여 객체로 매핑할 수 있다. 이번 포스팅에서는 Spring Boot에서 ..
서론Spring Boot는 Spring의 복잡한 설정을 고려하지 않고 곧바로 stand-alone Spring 어플리케이션을 개발 할 수 있도록 해준다. 복잡한 Spring 설정의 비용을 들이지 않고도 Spring 기반으로 Ruby on Rails 나 Express.js 와 같이 빠르게 REST 서비스를 만들수 있다. 이번 포스팅에서는 복잡한 설정 없이 곧바로 Spring 기반의 기본적인 REST컨트롤러를 생성하고 REST 컨트롤러를 단위테스트하는 방법을 소개한다.IntelliJ에서 Spring Boot 프로젝트 생성하기아마 앞으로도 Java 프로젝트를 설명할 때 IntelliJ 소개를 계속 할 것이다. IntelliJ는 Spring 개발에 훌륭한 도구이기 때문에 반드시 사용해보길 추천한다. 앞에서 In..
New title: content: 수정한 결과가 서버 재시작 없이 반영되는지 브라우저를 리로드해보자.style.css 파일의 background-color를 수정해보자.body { background-color: blue; } HTML 파일(Thymleaf) 수정, CSS 정적 파일 수정을 했을 경우 서버 재시작 없이 바로 적용되는 것을 확인할 수 있다.클래스 파일 수정이제 클래스 파일을 수정해보자. 우리는 기존의 예제 코드를 사용하여 PostController 에 JSON을 반환하는http://localhost:8080/posts 컨트롤러를 추가하였다. 서버 재시작 없이 진행하였다.@Controller @EnableAutoConfiguration public class PostsController {..
서론마이크로서비스 아키텍처와 유사한 서비스를 구현할 때 웹 어플리케이션 컨트롤러에서 API 서버로 REST 요청을 해야하는 경우를 만날 수 있다. 만약 Spring 기반은 웹 어플리케이션을 사용하고 있다면 RestTemplate을 사용하여 이 과정을 간단하게 처리할 수 있다. 이 포스팅에서는 Spring 기반 프로젝트에서 웹에서 Form 요청을 처리할 때 내부적으로 API 서버로 요청하여 다시 Spring에 결과를 적용하는 방법을 소개한다.테스트를 위한 Spring 웹 프로젝트 생성빠른 테스트를 진행하기 위해서 우리는 IntelliJ에서 SpringBoot를 사용하여 웹 프로젝트를 생성하기글에서 SpringBoot 프로젝트를 생성하는 것을 살펴보았다. 이 포스팅을 따라서 테스트를 위한 웹 프로젝트를 먼저..