본문 바로가기
개발서적

스프링 인 액션 - (1)

by 공부 안하고 싶은 사람 2022. 8. 9.
반응형

스프링 인 액션

part 1. 스프링 기초

chaper 1 스프링 시작하기

1.1 스프링이란?

스프링은 스프링 애플리케이션 컨텍스트라는 컨테이너를 제공, 이것은 빈/컴포넌트를 생성하고 관리한다.

빈끼리의 상호 연결은 의존성 주입(DI) 패턴을 기반으로 수행, 특정 빈이 의존하는 다른 빈의 생성과 관리를 컨테이너가 대신 해준다.

빈 등록의 역사?

xml 빈 선언, 의존성 주입

  1. annotation 빈 선언 + xml component-scan
  2. 스프링 부트에선 annotation 빈 선언 + 자동 component-scan

 

1.2 스프링 애플리케이션 초기 설정

스프링 부트 프로잭트 생성법

https://start.spring.io Initializer 사용

  • IDE에서 생성 (Intellij 추천)
  • 여러가지 방법이 존재하긴 함

생성시 프로젝트명, 언어 버전, 빌드방식, 패키징방법, 의존성 등을 설정할 수 있다.

 

프로젝트 구조(생략)

 

눈여겨 볼 부분

  • spring-boot-starter-parent에서 일반적으로 사용하는 의존성들을 기본적으로 의존하고 있다.
  • @SpringBootApplication은 3가지 어노테이션을 합친것이다.
    • @SpringBootConfiguration : @Configration의 특화된 형태
      @EnableAutoConfiguration : 필요로 하는 빈들을 자동으로 구성
      @ComponentScan : 하위 패키지의 빈들을 컨테이너로 등록할 수 있도록
  •  

 

테스트는 별도의 책에서 다루는게 좋다

 

1.3 스프링 애플리케이션 작성하기

MVC, 테스트 기본적인 실습 코드는 생략

 

DevTools 기능 (개발을 도와주는 도구)

  • 자바 코드 변경시 자동 재실행
  • 리소스 코드 변경시 자동 새로고침
  • 템플릿 캐시 자동 비활성화

H2 사용 중이라면 H2 콘솔 자동 활성화

 

 

1.4 스프링부트 살펴보기

  • 핵심 스프링 프레임워크
    • Spring MVC, Spring WebFlux 등
  • 스프링 부트
    • Actuator, 환경 속성, 테스트, CLI(그루비 스크립트) 등
  • 스프링 데이터
    • JPA, Mongo, Neo4j 등
  • 스프링 시큐리티
  • 스프링 배치
  • 스프링 클라우드

 


chapter 2 웹 애플리케이션 개발하기

기본 MVC 실습 코드 생략

유효성 검사(파라미터 객체의 각 속성에 대해)

  • @NotNull : null확인
    @Size : 사이즈 검사
  • @NotBlank : 공백 검사
  • @Pattern : 정규식 검사
  • @Digits : 자리수 검사
// 파라미터 객체에 @Valid 추가하면, Errors를 인자로 받을 수 있다.
@PostMapping
public String processDesign(@Valid Taco design, Errors errors) {
  ...
}

 

뷰 컨트롤러 선언하는 다른 방법 (별도의 로직 없이 정적뷰를 뿌려줄 경우) -> WebMvcConfigurer.addViewControllers() 구현

@Configuration
public class CustomWebConfig impliments WebMvcConfigurer {
  @Override
  public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController("/").setViewName("home");
  }
}

 


chapter 3 데이터로 작업하기

  1. JDBC : DB connection/statement/열고닫기/try-catch문 복잡
  2. JdbcTemplate : 위 복잡한 코드 없이 쿼리만으로 쉽게 사용가능
  3. Spinrg Dadta JPA : 캐시와 Repository로 쿼리 수를 줄일 수 있다.

 

JdbcTemplate으로 데이터를 다루는 내용 생략

 

 

JPA 실습 (자세한 내용은 다른 책에서 다루자)

Entity와 Dto 분리가 안됐다

  • @ManyToMany는 비추 -> @ManyToOne 으로 풀어서 해결해야 함
728x90
반응형

댓글