-
Notifications
You must be signed in to change notification settings - Fork 0
스프링 입문 섹션0~8 정리
minahkim03 edited this page May 4, 2024
·
3 revisions
- 스프링 입문 강의 -> 간단한 웹 애플리케이션 구현을 통해 스프링 찍먹
- 로드맵
- 스프링 입문 (스터디)
- 스프링 핵심 원리 (스터디)
- 스프링 웹 MVC
- 스프링 DB 데이터 접근 기술
- 실전! 스프링 부트 (스터디)
- 개발 환경 설정
- https://start.spring.io -> 스프링 부트 기반으로 스프링 프로젝트를 생성
- src 폴더 밑 main: 실제 개발 코드, test: 테스트 코드 두가지로 분리돼있음
- 왜 리액트 아이콘이 뜨는걸까.....
- View 환경설정
- resources/static 안에 있는 index.html을 우선 찾고 없으면 다른 index 템플릿 탐색
- controller에서 return이 템플릿 파일명. 해당 html을 불러옴
- 정적 컨텐츠: html 파일 등을 서버가 변경 없이 그대로 전달 해주는 것
- MVC(Model, View, Controller): 서버에서 값을 바꾸고 변환된 HTML을 전달
- API: 데이터를 가공 없이 그대로 전달
- 웹 애플리케이션 계층 구조: 컨트롤러(API), 서비스(핵심 비즈니스 로직), 도메인(디비에 저장되는 객체), 리포지토리(도메인을 디비에 저장, 관리)
- Interface에서 null을 반환할 수도 있는 경우-> Optional로 감쌈, return문에서는 Optional.ofNullable
- 테스트 시 각 테스트가 끝날 때 마다 리셋시켜주는 afterEach 반드시 필요
- java에서 final 키워드 == const
- given, when, then 테스트 -> given: 어떤 데이터를, when: 무엇을 테스트 할지, then: 검증하는 부분
- @Controller 어노테이션을 보고 스프링 컨테이너에 해당 컨트롤러를 생성, 관리함 -> 스프링빈이 관리된다.
- @Service, @Repository: 스프링 컨테이너에 반드시 해당 클래스를 등록하게함.-> 컴포넌트 스캔(스프링빈 등록 첫번째 방법)
- SpringConfig 클래스를 만들어 @Configuration,@Bean 어노테이션을 통해 직접 스프링빈 등록
- 생성자 주입(Structure 사용), 필드 주입(비추), Setter 주입(public 하게 노출되는 단점)->의존관계가 동적으로 변하는 경우는 거의 없으므로 생상자 주입 권장
- 컨트롤러가 index.html보다 우선순위가 높음 -> home.html이 index.html 대신 띄워지는 이유
- 개방 폐쇄 원칙 : 확장에는 열려있고 수정에는 닫혀있다.
- @Transactional: 테스트 이후 롤백을 하기 때문에 디비에 최종적으로 영향을 미치지 않음.
- JPA: SQL 쿼리 없이 데이터 삽입, 조회 등이 가능. Domain에서 Entity 설정 필요.
- 스프링 데이터 JPA: JPARepository가 알아서 컨테이너에 구현체를 만들어 스프링빈으로 등록해놓음.
*findBySomething -> JPA가 알아서 "select m from Member m where m.something = :something" 쿼리를 짜줌
- AOP: 원하는 곳에 공통 관심 사항을 적용함.
- 동작원리: 스프링 컨테이너 위에 올라올 때 프록시라는 가짜 스프링빈을 앞세워 올라옴. joinPoint.proceed() 이 끝나면 그때 진짜 스프링빈을 호출