코드로 배우는 스프링부트 복습

유신·2021년 6월 16일

스프링

목록 보기
8/8
  • @ResponseBody
    • HTTP의 BODY에 문자 내용을 직접 반환
    • viewResolver(View 이름으로부터 사용할 View Object를 매핑하는 역할.) 대신에 HttpMessageConverter가 동작



  1. 컨트롤러 -> 서비스 -> 리퍼지토리 -> DB
  2. (컨트롤러,서비스,리퍼지토리) -> 도메인

  • 일반적인 웹 애플리케이션 구조

    • 컨트롤러: 웹 MVC의 컨트롤러 역할

    • 리포지토리: 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리

    • 도메인: 비즈니스 도매인 객체, 예) 회원, 주문 쿠포 ㄴ등등 주로 데이터베이스에 저장하고 관리됨

      • 도메인 모델: 특정 도메인을 개념적으로 표현한 것
        특징 : 핵심 규칙을 구현한 코드가 도메인 모델에만 위치하기 때문에 규칙이 바뀌거나 규칙을 확장해야 할 때 다른 코드에 영향을 덜 주고 변경 내역을 모델에 반영할 수 있게 된다.
    • AOP : 관점 지향 프로그래밍(공통 관심 사항)
      특징: 어떤 로직을 기준으로 핵심 적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화 하겠다는 것
      ex) 시간을 측정하는 로직이 모든 메소드에 필요 할 경우 공통 관심 사항 AOP로 표현


  • 개발 팁

    • 테스트 코드는 순서와 의존 관계에 상관 없이 실행 되야 한다. (다른 테스트 코드와 연관 되어서 실행 되면 안됨-> 단위테스트

    • 테스트 클래스를 먼저 생성하는 것 -> TDD 테스트 주도 개발

    • 생성자에 @Autowired가 있으면 스프링이 연관된 객체를 스프링 컨테이너에서 찾아서 넣어 준다.(생성자가 하나 있으면 생략 가능)

    • 스프링 부트 어플리케이션 어노테이션 있는 패키지 부터 하위패키지까지 컴포넌스 스캔 가능

    • 스프링 빈을 등록하는 2가지 방법

      • 컴포넌트 스캔과 자동 의존 관계 설정
      • 자바 코드로 직접 스프링 빈 등록하기
    • 실무에서는 주로 정형화된 컨트롤러, 서비스, 리포지토리 같은 코드는 컴포넌트 스캔을 사용한다.

      정형화 되지 않거나 , 상황에 따라 구현 클래스를 변경해야 하면 설정을 통해 스프링 빈으로 등록 한다.(ex-> 레포지토리를 JPA로 변경하거나, JDBC를 이용한 만든 레퍼지토리로 변경 할 경우
      기본 레퍼지토리를 인터페이스로 구현한 다음 변경할 레포지토리를 스프링 빈을 통해 등록해준다.)

    • 스프링 DB 접근 기술

      • H2 데이터 베이스
      • 순수 JDBC (요즘 많이 안쓴다.)
      • jdbcTemplate
      • JPA (요즘 대세)
      • 스프링 데이터 JPA (요즘 대세)
    • JPA를 통한 모든 데이터 변경은 트랙잭션 안에서 실행해야 한다.

profile
초보개발자

0개의 댓글