끄적끄적
스프링 입문 1 본문
💡 스프링 웹 개발 기초
- 정적 콘텐츠
- resources/static
- 서버에서 변형 없이 파일을 그대로 웹브라우저에 내리는 것(Welcome Page처럼)
- MVC와 템플릿 엔진
- 가장 많이 하는 방식 서버에서 html을 동적으로 변형시켜서 내려주는 것
- Model, View, ControllerView - 화면
- Controller - 비즈니스 로직, 내부처리 (resources/template)
- Model - 화면에 필요한 것을 담아주기
- API
- ViewResolver를 사용하지 않는 대신 HttpMessageConverter가 동작
- @ResponseBody 객체 반환 → json 반환 {key, value}
💡 회원 관리 예제 - 백엔드 개발
- 일반적인 웹 애플리케이션 계층 구조
컨트롤러 - 웹 MVC의 컨트롤러 역할
서비스 - 핵심 비즈니스 로직 구현
리포지토리 - DB에 접근, 도메인 객체를 DB에 저장하고 관리
도메인 - 비즈니스 도메인 객체 ex)회원, 주문 등 주로 데이터베이스에 저장하고 관리됨
아직 데이터 저장소가 선정되지 않아서, 우선 인터페이스로 구현 클래스를 변경할 수 있도록 설계
- Optional<Member>
- java8에 들어가는 기능. null 반환시 그대로 반환하지 않고 Optional이라는 걸로 감싸는 방법 선호.
- Optional.ofNullable(value)
- null이 넘어온 경우 NPE(NullPointerException)를 던지지 않고 Optional.empty()와 동일하게 비어있는 Optional 객체를 얻어옴.]
- @AfterEach
- callback 함수. 이벤트 후에 실행되는 것.
- 한번에 여러 테스트를 실행하면 메모리 DB에 직전 테스트의 결과가 남을 수 있다. 이렇게 되면 이전 테스트 때문에 다음 테스트가 실패할 가능성이 있다. @AfterEach를 사용하면 각 테스트가 종료될 대마다 이 기능을 실행한다. 여기서는 메모리 DB에 저장된 데이터를 삭제한다.
- @BeforeEach
- 각 테스트 실행 전에 호출된다. 테스트가 서로 영향이 없도록 항상 새로운 객체를 생성하고, 의존 관계도 새로 맺어줌.
💡 스프링 빈과 의존관계
- 컴포넌트 스캔과 자동 의존관계 설정
- @Autowired - MemberController가 생성될 때, 스프링 컨테이너에 있는 스프링빈에 등록된 MemberService를 가져다가 연결해줌.(DI)
- 스프링은 스프링 컨테이너에 스프링 빈을 등록할 때, 기본으로 싱글톤으로 등록(유일하게 하나만 등록해서 공유). 따라서 같은 스프링 빈이면 모두 같은 인스턴스이다.
- @Component 애노테이션이 있으면 스프링빈으로 자동등록됨(@Controller, @Service, @Repository)
- 자바 코드로 직접 스프링 빈 등록하기
- 상황에 따라 구현 클래스를 변경해야하거나, 정형화 되지 않은 경우 사용
출처 : 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술
'CS > Spring' 카테고리의 다른 글
Spring 정의와 특징 (0) | 2022.04.10 |
---|