인프런 김영한 님의 [스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술] 강의 학습 기록입니다. 스프링 부트의 기초부터 웹 MVC, DB 접근 기술(JPA, Spring Data JPA)까지 전반적인 흐름을 학습하고 실습한 코드를 저장합니다.
강의 커리큘럼에 따른 학습 진행 상황입니다.
- 프로젝트 환경 설정
- 라이브러리 살펴보기
- View 환경 설정
- 스프링 웹 개발 기초
- 정적 컨텐츠
- MVC와 템플릿 엔진
- API
- 회원 관리 예제 - 백엔드 개발
- 비즈니스 요구사항 정리
- 회원 도메인과 리포지토리 만들기
- 리포지토리 테스트 케이스 작성 (JUnit)
- 스프링 빈과 의존관계
- 컴포넌트 스캔과 자동 의존관계 설정
- 자바 코드로 직접 스프링 빈 등록하기
- 회원 관리 예제 - 웹 MVC 개발
- 회원 웹 기능 (등록, 조회)
- 스프링 DB 접근 기술
- H2 데이터베이스 설치
- 순수 JDBC
- 스프링 JdbcTemplate
- JPA
- 스프링 데이터 JPA
- AOP
- AOP가 필요한 상황
- AOP 적용
- 정적 컨텐츠: 파일을 그대로 웹 브라우저에 내려주는 방식
- MVC와 템플릿 엔진: 서버에서 HTML을 동적으로 바꿔서 내려주는 방식 (Model, View, Controller)
- API: JSON 데이터 포맷으로 클라이언트에게 데이터를 전달하는 방식 (
@ResponseBody)
@AfterEach: 각 테스트가 종료될 때마다 실행. 메모리 DB에 저장된 데이터를 삭제할 때 사용.- TDD(테스트 주도 개발) 의 중요성과 테스트 케이스 작성 요령 학습.
- 컴포넌트 스캔:
@Controller,@Service,@Repository애노테이션을 이용한 자동 등록. - 자바 코드 설정:
@Configuration,@Bean을 이용해 직접 설정 파일에 등록.
- 순수JDBC: 반복적인 코드와 SQL작성하는 코드가 많음
- JDBC Template: 반복 코드를 제거하지만, SQL은 직접 작성
- JPA: 기본 SQL과 반복 코드도 직접 처리해줌
- 스프링 데이터JPA: 인터페이스만으로 기본 CRUD제공
- AOP: Aspect Oriented Programming
- 공통 관심 사항과 핵심 관심 사항을 분리
- 프록시 주입하여 사용용
Docs:학습 내용 업데이트Feat:새로운 실습 코드 추가Test:테스트 코드 작성Refactor:코드 유지보수
src
├── main
│ ├── java
│ │ └── hello.hello_spring
│ │ ├── controller # 웹 계층 (Controller)
│ │ ├── domain # 도메인 객체 (Member)
│ │ ├── repository # DB 접근 계층 (Repository Interface/Impl)
│ │ └── service # 핵심 비즈니스 로직 (MemberService)
│ └── resources
│ ├── static # 정적 파일 (HTML, CSS)
│ └── templates # 템플릿 파일 (Thymeleaf)
└── test # 테스트 코드