SpringInAction 1장

김대철·2025년 2월 21일
0

spring-in-action

목록 보기
1/8
post-thumbnail

Chap 1. 스프링 시작하기

1.1. 스프링이란?

  • 스프링 애플리케이션 컨텍스트: 스프링에서 제공하는 컨테이너, 컴포넌트 생성.관리

  • 빈: 애플리케이션 컴포넌트, 컨텍스트 내부에서 서로 연결되어 애플리케이션 생성

  • 의존성 주입: 빈의 상호연결 방식, 별도의 개체(컨테이너)가 수행(자체적 X)
    → 생성자 인자 or 속성의 접근자 메소드로 처리

    (기존) XML 기반

    (최신) JAVA 기반: 어노테이션 활용

    ※ 어노테이션: 클래스, 함수 등에 의미 추가, 컴파일 시 처리, 주석으로 처리 됨(바이트 코드 X)

    • Configuration: 각 빈을 스프링 애플리케이션 컨텍스트에 제공하는 구성클래스

    • Bean: 메소드에서 반환되는 객체가 애플리케이션 컨텍스트의 빈으로 추가

      ※ JAVA 기반 장점: 강화된 타입 아전, 향상된 리팩토링 기능, 가독성 향상

  • 스프링: 자동-구성 기능 존재 → XML 구성 or JAVA 구성 X

    ※ 자동-구성

    • 자동연결(autowiring) + 컴포넌트 검색(component scanning) 기법 기반
      • 자동연결: 의존관계가 있는 컴포넌트를 자동으로 다른 빈에 연결
      • 컴포넌트 검색: classpath에 지정된 컴포넌트 검색 → 스프링 애플리케이션 컨텍스트 빈 생성
    • 별도의 코드 작성 없이도 컴포넌트 활성화
    • XML 또는 JAVA기반에 필요한 구성 코드 ↓

1.2 스프링 애플리케이션 초기 설정

  • 프로젝트 주요 항목
    • mvnw, mvnw.cmd: 메이븐 래퍼 스크립트, 프로젝트 빌드
    • pom.xml: 빌드명세 지정파일
    • application.properties: 구성 속성 지정
    • static: 정적 콘텐츠(이미지, JS 등) 지정 폴더
    • templates: 브라우저 콘텐츠를 보여주는 템플릿 지정
  • 빌드 명세 (pom.xml 파일)
    • parent: 부모 POM(Project Object Model) 정의
    • dependencies: 의존성 정의
    • 의존성에 starter 포함: 스프링 부트 스타터 의존성 → 다른 라이브러리 사용(자체 라이브러리 X)
      • 스타터 의존성 장점
        1) 의존성 선언 필요 x → 빌드 파일 관리 용이
        2) 기능의 관점으로 의존성 고려 → 일일이 지정 x, 스타터 의존성만 추가
        3) 라이브러리 버전 고려 필요 x → 스프링 부트의 라이브러리는 버전 호환 보장
    • 플러그인: maven 애플리케이션 실행, 라이브러리 포함 여부 확인, 매니페스트 파일 jar에 생성
  • 부트스트랩 클래스(구동)
    • jar 파일에서 실행을 위한 클래스 (…Application 클래스)
    • SpringBootApplication 어노테이션
      1) SpringBootConfiguration: 현재 클래스를 구성클래스로 구성
      2) EnableAutoConfiguration: 스프링 부트 자동-구성 활성화
      3) ComponentScan: 컴포넌트 검색 활성화
    • main: jar파일이 실행 시 호출되는 메소드
  • 테스트 클래스
    • 테스트를 위해 제공되는 클래스
    • SpringBootTest 어노테이션: 스프링 부트 기능으로 테스트를 JUnit에 알려줌

1.3 스프링 애플리케이션 작성하기

  • 웹 요청 처리(Controller 클래스)
    • 스프링 MVC: Model-View-Controller
    • 컨트롤러(Controller): 웹 요청과 응답을 처리하는 컴포넌트 or 구성 요소
  • 뷰 정의
    • Thymeleaf, JSP, FreeMarker 등의 뷰 템플릿 엔진 존재
  • DevTools
    • 코드변경 시 자동으로 애플리케이션 다시 시작
    • 브라우저의 리소스 변경 시 자동으로 새로고침
    • 템플릿 캐시 자동으로 비활성화
    • H2 데이터베이스 사용 시 자동으로 H2 콘솔 활성화

1.4 스프링 살펴보기

  • 핵심 스프링 프레임워크
    • 스프링 MVC
      • HTML(2장)
      • REST API(6장)
    • 스프링 부트
      • 스타터 의존성 및 자동-구성
      • 액추에이터 → 애플리케이션 내부 작동 확인 (덤프 정보, 상태 등)
      • 환경 속성의 명세
      • 프레임워크에 추가되는 테스트 지원
      • 스프링 부트 CLI 제공 → 그루비 스크립트로 작성하여 명령행에서 실행
    • 스프링 데이터(3장)
      • JPA(관계형 DB)
      • Mongo(문서형 DB)
      • Neo4j(그래프형 DB)
    • 스프링 시큐리티(4.12장): 인증, 허가, API 보안등의 보안 요구
    • 스프링 통합과 배치(9장)
      • 스프링 통합: 데이터가 사용 가능한 즉시 처리되는 실시간 통합
      • 스프링 배치: 데이터 처리 시점을 트리거가 알려줄 때 수집 처리되는 배치 통합 처리
    • 스프링 클라우드(13.14.15장)
profile
개발하는 미어캣

0개의 댓글