개발서적읽기
-
[스프링 인 액션] Chapter 2 - 웹 애플리케이션 개발하기 :: 폼 입력 유효성 검사하기개발서적읽기/Spring in Action 제 5판 2020. 7. 28. 13:42
폼의 유효성 검사를 하는 방법으로 processDesign과 processOrder 메서드에 수많은 if/then블록을 너저분하게 하는 것이 있다. 이 경우 데이터가 적합한지 각 필드에서 일일이 확인해야 한다. 그러나 이것은 무척 번거롭고 코드 파악과 디버깅이 어렵다.다행히 스프링은 자바의 빈 유효성 검사(Bean Validation)를 지원한다. 이것을 사용하면 애플리케이션에 추가 코드를 작성하지 않고 유효성 검사 규칙을 쉽게 선언할 수 있다. 또한 스프링 부트를 사용하면 유혀성 검사 라이브러리를 프로젝트에 쉽게 추가할 수 있다. 유효성 검사 API와 이 API를 구현한 Hibernate 컴포넌트는 스프링 부트의 웹 스타터 의존성으로 자동 추가되기 때문이다.스프링 MVC에 유효성 검사를 적용하려면 다음..
-
[스프링 인 액션] Chapter 2 - 웹 애플리케이션 개발하기 :: 폼 제출 처리하기개발서적읽기/Spring in Action 제 5판 2020. 7. 28. 13:41
타코 홈페이지의 Submit your taco 버튼에 대한 요청을 처리해보자뷰(design.html)의 form 태그를 보면 method 속성이 POST로 설정되어 있는데도 form에는 action 속성이 선언되지 않은 것을 알 수 있다. 이 경우 폼이 제출되면 브라우저가 폼의 모든 데이터를 모아서 폼에 나타난 GET 요청과 같은 경로(/design)로 서버에 HTTP POST 요청을 전송한다. 따라서 이 요청을 처리하는 컨트롤러의 메서드가 있어야 한다.@PostMapping public String processDesign(Taco design) { log.info("Processing design: " + design); return "redirect:/orders/current"; }타코 디자인 폼..
-
[스프링 인 액션] Chapter 2 - 웹 애플리케이션 개발하기 :: 정보 보여주기개발서적읽기/Spring in Action 제 5판 2020. 7. 28. 13:39
1장에서는 애플리케이션 홈페이지를 보여주기 위해 최초의 스프링 MVC 컨트롤러를 생성하였다. 이번 장에서는 타코 클라우드 애플리케이션에 가장 중요한 커스텀 타고 디자인 기능을 추가할 것이다. 그리고 이렇게 하면서 스프링 MVC를 더 깊이 있게 알아볼 것이다. 또한 모델 데이터를 보여주고 사용자 입력을 처리하는 방법을 알게 될 것이다.웹 브라우저를 사용하는 클라이언트가 타코를 커스터마이징할 수 있도록 DB로부터 식자재를 가져와 브라우저에 보여줘야 한다. 스프링 웹 어플리케이션에서는 데이터를 가져오고 처리하는 것이 컨트롤러의 일이다. 그리고 브라우저에 보여주는 데이터를 HTML로 나타내는 것은 뷰가 하는 일이다. 컨트롤러와 뷰를 이용해 식자재를 브라우저에 보여주도록 하자. 먼저 다음 컴포넌트를 생성해야 한다..
-
[스프링 인 액션] Chapter 1 - 스프링 시작하기 :: 스프링 애플리케이션 작성하기개발서적읽기/Spring in Action 제 5판 2020. 7. 28. 13:35
■웹 요청 처리스프링은 스프링 MVC라고 하는 강력한 웹 프레임워크를 갖고 있다. 스프링 MVC의 중심에는 컨트롤러가 있다. 컨트롤러는 웹 요청과 응답을 처리하는 컴포넌트다. 웹 브라우저를 상대하는 애플리케이션의 경우 컨트롤러는 선택적으로 모델 데이터를 채워서 응답한다. 그리고 브라우저에 반환되는 HTML을 생성하기 위해 해당 응답의 웹 요청을 뷰에 전달한다.package tacos; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class HomeController { @GetMapping("/") public String..
-
[스프링 인 액션] Chapter 1 - 스프링 시작하기 :: 스프링 애플리케이션 초기 설정하기개발서적읽기/Spring in Action 제 5판 2020. 7. 28. 13:31
■스프링 애플리케이션 초기 설정mvnw.cmd 메이븐 래퍼 스크립트. 메이븐이 각자 컴퓨터에 설치되어 있지 않더라도 이 스크립트를 사용하여 프로젝트를 빌드할 수 있다.( 하위의) org.springframework.boot spring-boot-starter-parent 2.3.1.RELEASE 'spring-boot-starter-parent를 부모 POM으로 한다'는 것을 의미. 이 부모 POM은 스프링 프로젝트에 사용되는 여러 라이브러리의 의존성 관리를 제공한다. 따라서 부모 POM이 제공하는 라이브러리들은 버전을 지정할 필요가 없다. 또한 부모 POM이 제공하는 라이브러리들의 버전은 부모 POM의 버전을 계승한다.spring-boot-starter-?? org.springframework.boot..
-
[스프링 인 액션] Chapter 1 - 스프링 시작하기 :: 스프링이란?개발서적읽기/Spring in Action 제 5판 2020. 7. 28. 13:29
■스프링 애플리케이션 컨텍스트 스프링은 스프링 애플리케이션 컨텍스트라는 컨테이너를 제공한다. 이 컨테이너는 컴포넌트들을 생성하고 관리한다. 그리고 컴포넌트 또는 빈들은 스프링 애플리케이션 컨텍스트내부에서 서로 연결되어 완전한 애플리케이션을 만든다. 이 상호 연결은 의존성 주입이라고 알려진 패턴을 기반으로 수행된다. 즉 컴포넌트와 컴포넌트가 의존하는 관계를 스프링 애플리케이션 컨텍스트라는 컨테이너가 담당하여 수행한다. 스프링 애플리케이션 컨텍스트는 모든 컴포넌트의 생성, 관리를 담당하고 해당 컴포넌트를 필요로 하는 빈에 주입(연결)한다. ■스프링의 자동-구성 스프링은 스스로 컴포넌트들을 구성한다. 이 기능을 자동-구성이라고 한다. 스프링의 자동-구성 기능 덕분에 스프링을 사용하는 개발자는 별도의 빈 상호 ..
-
[이펙티브 자바] item 32 - 제네릭과 가변인수를 함께 쓸 때는 신중하라개발서적읽기/Effective Java - temp 2020. 7. 27. 22:50
■가변인수란? 가변인수는 메서드에 넘기는 인수의 개수를 클라이언트가 조절할 수 있게 해주는 기법이다.static void test(List... param) { }가변인수 메서드는 제네릭과 함께 자바5에 추가되었다. 아쉽게도 이 둘은 서로 잘 어우러지지 않는다. ■가변인수의 허점 가변인수는 구현 방식에 허점이 있다. 가변인수 메서드를 호출하면 가변인수를 담기 위한 배열이 자동으로 하나 만들어진다. 그런데 내부로 감춰야 했을 이 배열이 클라이언트에 노출된다는 단점이 있다. 그 결과 varargs 매개변수에 제네릭이나 매개변수화 타입이 포함되면 알기 어려운 컴파일 경고가 발생한다.거의 모든 제네릭과 매개변수화 타입은 실체화되지 않는다. (item 28에서 실체화 불가 타입은 런타임에는 컴파일타임보다 타입 관..
-
[이펙티브 자바] item 26 - 로 타입은 사용하지 말라개발서적읽기/Effective Java - temp 2020. 7. 19. 23:21
■제네릭 관련 용어 정리 한글 용어 영문 용어 예 정규 타입 매개변수 formal type parameter E 제네릭 타입 generic type List 실제 타입 매개변수 actual type parameter String 매개변수화 타입 parameterized type List 한정적 타입 매개변수 bounded type parameter 재귀적 타입 한정 recursive type bound 비한정적 와일드카드 타입 unbounded wildcard type List 한정적 와일드카드 타입 bounded wildcard type List다. 이것이 어떤 타입이라도 담을 수 있는 가장 범용적인 매개변수화 Set 타입이다. 다음은 비한정적 와일드카드 타입을 사용해 선언한 메소드이다.static i..