Skip to content

스프링 입문 섹션0~8 정리

minahkim03 edited this page May 4, 2024 · 3 revisions

섹션 0

  • 스프링 입문 강의 -> 간단한 웹 애플리케이션 구현을 통해 스프링 찍먹
  • 로드맵
  1. 스프링 입문 (스터디)
  2. 스프링 핵심 원리 (스터디)
  3. 스프링 웹 MVC
  4. 스프링 DB 데이터 접근 기술
  5. 실전! 스프링 부트 (스터디)

섹션 1

  1. 개발 환경 설정
  • https://start.spring.io -> 스프링 부트 기반으로 스프링 프로젝트를 생성
  • src 폴더 밑 main: 실제 개발 코드, test: 테스트 코드 두가지로 분리돼있음

스크린샷 2024-05-03 오전 3 26 06

  • 왜 리액트 아이콘이 뜨는걸까.....
  1. View 환경설정
  • resources/static 안에 있는 index.html을 우선 찾고 없으면 다른 index 템플릿 탐색
  • controller에서 return이 템플릿 파일명. 해당 html을 불러옴

섹션 2

  • 정적 컨텐츠: html 파일 등을 서버가 변경 없이 그대로 전달 해주는 것
  • MVC(Model, View, Controller): 서버에서 값을 바꾸고 변환된 HTML을 전달
  • API: 데이터를 가공 없이 그대로 전달

섹션 3

  • 웹 애플리케이션 계층 구조: 컨트롤러(API), 서비스(핵심 비즈니스 로직), 도메인(디비에 저장되는 객체), 리포지토리(도메인을 디비에 저장, 관리)
  • Interface에서 null을 반환할 수도 있는 경우-> Optional로 감쌈, return문에서는 Optional.ofNullable
  • 테스트 시 각 테스트가 끝날 때 마다 리셋시켜주는 afterEach 반드시 필요
  • java에서 final 키워드 == const
  • given, when, then 테스트 -> given: 어떤 데이터를, when: 무엇을 테스트 할지, then: 검증하는 부분

섹션 4

  • @Controller 어노테이션을 보고 스프링 컨테이너에 해당 컨트롤러를 생성, 관리함 -> 스프링빈이 관리된다.
  • @Service, @Repository: 스프링 컨테이너에 반드시 해당 클래스를 등록하게함.-> 컴포넌트 스캔(스프링빈 등록 첫번째 방법)
  • SpringConfig 클래스를 만들어 @Configuration,@Bean 어노테이션을 통해 직접 스프링빈 등록
  • 생성자 주입(Structure 사용), 필드 주입(비추), Setter 주입(public 하게 노출되는 단점)->의존관계가 동적으로 변하는 경우는 거의 없으므로 생상자 주입 권장

섹션 5

  • 컨트롤러가 index.html보다 우선순위가 높음 -> home.html이 index.html 대신 띄워지는 이유

섹션 6

  • 개방 폐쇄 원칙 : 확장에는 열려있고 수정에는 닫혀있다.
  • @Transactional: 테스트 이후 롤백을 하기 때문에 디비에 최종적으로 영향을 미치지 않음.
  • JPA: SQL 쿼리 없이 데이터 삽입, 조회 등이 가능. Domain에서 Entity 설정 필요.
  • 스프링 데이터 JPA: JPARepository가 알아서 컨테이너에 구현체를 만들어 스프링빈으로 등록해놓음.

스크린샷 2024-05-04 오후 2 28 01

*findBySomething -> JPA가 알아서 "select m from Member m where m.something = :something" 쿼리를 짜줌

섹션 7

  • AOP: 원하는 곳에 공통 관심 사항을 적용함.
  • 동작원리: 스프링 컨테이너 위에 올라올 때 프록시라는 가짜 스프링빈을 앞세워 올라옴. joinPoint.proceed() 이 끝나면 그때 진짜 스프링빈을 호출

섹션 8

스크린샷 2024-05-04 오후 3 10 09