alt
Home 스프링 인 액션 - 1. 스프링 기초 - 2. 웹 애플리케이션 개발하기
Post
Cancel

스프링 인 액션 - 1. 스프링 기초 - 2. 웹 애플리케이션 개발하기


스프링으로 정보 보여주기

: 작성할 애플리케이션의 도메인을 이해하고, 애플리케이션의 관심사를 Domain으로 나눠 구분한다.


Lombok 라이브러리 사용

  • 스프링 라이브러리는 아니지만 Java + Spring에서 유용하게 쓰인다. getter, setter 등 boilerplate를 줄여주고, 다양한 형태의 생성자, 로깅, 빌더를 지원한다.
1
2
3
4
@Data // * 혹은 @Getter / @Setter
public class FooEntity {
  private String id;
}
1
2
3
4
5
6
7
8
@Slf4j // *
@Controller
public class FooController {
  @GetMapping("/users")
  public String func(User user) {
    // ...
  }
}
  • 기존에는 @RequestMapping(method = RequestMethod.GET) 처럼 HTTP 메소드를 구별했다고 한다. 스프링 4.3 이후에 생긴 @GetMapping 과 같은 각 메소드에 특화된 어노테이션을 사용하는 것이 권장된다. @RequestMapping은 공통적인 기본 경로를 구별할 때 사용하면 좋다.
  • 위의 경우 (Client)뷰에서 /users적절히 유효한 데이터를 전달하면, (Server)컨트롤러에서는 func()가 호출되고 전달되는 데이터들과 바인딩된 속성을 갖는 User 객체를 인자로 받게 된다.
    • 이 때 클라이언트로부터 항상 유효한 데이터를 받으리란 보장이 없다. 따라서, 서버쪽에선 유효성을 검증해야 한다.


유효성 검증

  • 스프링 MVC는 일반적으로 직접 유효성 검증하는 로직을 작성하거나, 자바 빈 유효성 검사 APIHibernate 컴포넌트의 유효성 검증 어노테이션을 이용한다.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    @Data
    public class FooEntity {
      @NotNull
      @Size(min=5, message="Name must be at least 5 characters long")
      private String name;
        
      @Pattern(regexp="^(0[1-9]|1[0-2])([\\/])([1-9][0-9])") // MM/YY
      private String expiration
    }
    
    • 간단한 경우 null check, size 검사 등을 할 수 있고, regex를 통해 검증을 강화할 수 있다.
    • 이처럼 어노테이션을 활용하면, 컨트롤러단에서 인자로받는 객체에 @Valid or @Validated 어노테이션을 붙여준다.

    ```java … import org.springframework.validation.Errors; … @PostMapping public String func(@Valid User user, Errors errors) { if (error.hasErrors()) { return “error”; } // … }


애플리케이션을 실행하는 두 가지 방법

  1. 빌드 후 java -jar로 JAR 실행
  2. spring-boot:run 실행


  • Spring MVC 프레임워크를 사용할 때는 간단한 뷰까지 같이 작성을 해주는 경우가 많다.
  • JSP, Thymeleaf, FreeMarker, Mustache, Groovy 등 다양한 방법이 있다. 저 중 타임리프가 조금 편하다고 하고, 머스타치도 나쁘지는 않았던 것 같다.
  • 뷰 컨트롤러: 스프링 컨트롤러는 @Controller 어노테이션을 이용하는데, 사용자의 입력을 처리하지 않는 간단한 컨트롤러의 경우가 있다.
    • e.g) WebConfig: 보통 WebMvcConfigurer를 implements해 구현한다.



Reference) 스프링 인 액션 5판

This post is licensed under CC BY 4.0 by the author.