스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

oyeon·2021년 4월 1일
0
post-thumbnail

테스트는 순서에 의존관계가 없어야 한다. -> store.clear();

@ComponentScan 선언(@Service, @Repository 등) vs @Bean 등록

  1. 컴포넌트 스캔과 자동 의존관계 설정(DI) (@ComponentScan 혹은 갖고 있는 어노테이션 선언)
  • @Controller, @Service, @Repository 안에 @ComponentScan 들어있음.
  • Spring이 실행될 때 Spring 컨테이너에 @ComponentScan 들어있는 것들을 빈으로 넣어서 관리
  1. 자바 코드로 직접 스프링 빈 등록 (@Bean 등록)
  • DI의 종류 3가지
  1. 생성자 주입 : 권장하는 스타일. 조립 시점(Spring 실행되는 시점)에 생성자로 조립해 놓고, 끝을 내야 한다. (그 다음엔 변경을 막아 버린다.)

  2. 필드 주입 : 별로 안 좋다. 중간에 수정할 방법이 없다.

  3. Setter Injection : 단점 - 누군가가 MemberController로 호출했을 때, public 으로 열려있어야 한다. (public 에 노출)

※ Spring 쓰는 이유
메모리 멤버 -> JDBC 멤버로 변경시 기존의 코드는 하나도 손 대지 않고, 애플리케이션 설정부분만 만지면 실제 애플리케이션 코드를 손대지 않고 똑같이 동작하게한다.

※ 객체지향적 설계가 좋은 이유 : 인터페이스를 두고 구현체 바꿔끼기 가능(다형성 활용). 이걸 가능하게 spring container가 지원해준다. DI 덕분에 개발이 편리해진다.

h2 데이터베이스 연결
cmd에서 */h2/bin 접근후 javaw -jar h2-1.4.200.jar 를 실행

통합 테스트
@SpringBootTest : 스프링 컨테이너와 테스트를 함께 실행한다.
@Transactional : DB에 값 넣고 마지막에 ROLLBACK -> 실제 데이터가 반영 X -> 다음테스트를 반복해서 실행가능.

JdbcTemplate : 실무에서도 많이 사용.

60~70% : 테스트 코드
20~30% : 프로덕션 코드
프로덕션 코드가 커질수록 굉장히 중요. 에러 -> 몇 억이상의 손해 발생가능

AOP : 공통 핵심 사항 빼놓을 때 사용(시간 측정 예시 떠올리기), 프록시 방식 사용

reference
스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

profile
Enjoy to study

0개의 댓글