코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 섹션 2~4장

cse 23·2024년 5월 1일
0

스프링 부트3

목록 보기
2/4

섹션 2: 웹 개발 기초

정적 콘텐츠 (Static Content)

  • 서버가 HTML, CSS, JS 파일을 가공 없이 그대로 브라우저에 내려줌
  • resources/static 폴더에 위치한 파일 → URL 매핑만으로 바로 응답

MVC (Model - View - Controller)

역할 분리

  • View: 화면 출력 전담 (HTML, Thymeleaf 등)
  • Controller: 요청 처리, 비즈니스 로직 호출, 모델 생성 및 전달

동작 흐름 (예: hello-mvc 요청 시)

  1. 웹 브라우저가 URL /hello-mvc 요청
  2. 내장 톰캣이 스프링에 전달
  3. 스프링이 HelloController에서 매핑된 메서드 실행
  4. 메서드에서 Model에 데이터를 담음 (key = name)
  5. View Resolver가 templates/hello-template.html 찾아서 Thymeleaf에 전달
  6. Thymeleaf가 HTML 렌더링 → 사용자에게 결과 반환

API 방식 (데이터 응답)

  • JSON 형식으로 데이터 반환
  • 서버 간 통신이나 앱-서버 간 통신에서 주로 사용
  • @ResponseBody 어노테이션 → HTTP Body에 데이터 직접 전달
  • 객체를 반환하면 스프링이 기본적으로 Jackson 라이브러리를 통해 JSON으로 변환

예시

@ResponseBody
public Hello hello(@RequestParam("name") String name) {
    Hello h = new Hello();
    h.setName(name);
    return h;
}
  • command + P → 파라미터 정보 확인 가능 (required = true 등)
  • ctrl + enter → Getter/Setter 자동 생성 단축키

섹션 3: 회원 관리 예제 - 백엔드 개발

비즈니스 요구사항 정리

  • 데이터 항목: 회원 ID, 이름
  • 기능: 회원 등록, 회원 조회
  • 데이터 저장소 미정 (아직 DB 미정 → 메모리 기반으로 개발 시작)

섹션 4: 스프링 빈과 의존관계

스프링 빈 등록 방법 2가지

  1. 컴포넌트 스캔 + 자동 의존관계 주입
  2. 자바 코드로 직접 등록 (예: @Configuration, @Bean)

컴포넌트 스캔 원리

  • @Component가 붙은 클래스는 자동으로 스프링 빈으로 등록

  • 이 어노테이션을 포함하는 대표 애노테이션:

    • @Controller
    • @Service
    • @Repository

예시 구조

@Controller
public class MemberController {
    private final MemberService memberService;

    public MemberController(MemberService memberService) {
        this.memberService = memberService;
    }
}
  • MemberControllerMemberService를 의존
  • 스프링이 생성자를 통해 자동으로 MemberService를 주입

0개의 댓글