Notice
Recent Posts
Recent Comments
Link
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Tags
more
Archives
Today
Total
관리 메뉴

끄적끄적

스프링 입문 1 본문

CS/Spring

스프링 입문 1

alstj_성공 2022. 4. 18. 23:14

💡 스프링 웹 개발 기초

  • 정적 콘텐츠
    • 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 접근 기술

(https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%9E%85%EB%AC%B8-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8/dashboard)

'CS > Spring' 카테고리의 다른 글

Spring 정의와 특징  (0) 2022.04.10