책읽기

[스프링5 프로그래밍 입문][chap01/chap02] 들어가며/스프링 시작하기

pythaac 2022. 2. 4. 22:22

https://github.com/pythaac/Spring_tutorial/tree/main/%EC%8A%A4%ED%94%84%EB%A7%815%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%20%EC%9E%85%EB%AC%B8/chap02/src/main/java/com/example/chap02

 

GitHub - pythaac/Spring_tutorial: These are test tutorial codes between react native(android) and spring boot

These are test tutorial codes between react native(android) and spring boot - GitHub - pythaac/Spring_tutorial: These are test tutorial codes between react native(android) and spring boot

github.com

 

1. 스프링이란

  • 스프링 프레임워크의 주요 특징
    • 의존 주입
    • AOP
    • MVC 웹 프레임워크
    • DB 연동
  • 자주 사용되는 프로젝트
    • 스프링 데이터
      적은 양의 코드로 데이터 연동 처리
    • 스프링 시큐리티
      인증/인가와 관련된 프레임워크
    • 스프링 배치
      로깅/추적, 작업 통계, 실패 처리 등

 


1. 메이븐

  • pom.xml
    • 메이븐 프로젝트에서 핵심은 pom.xml 파일
    • 메이븐 프로젝트에 대한 설정 정보를 관리하는 파일
    • 의존 모듈이나 플러그인 등에 대한 설정
  • 의존 설정
    • 한 개의 모듈을 아티팩트라는 단위로 관리
    • 의존을 추가한다는 것 = 일반적인 자바 어플리케이션에서 클래스 패스에 모듈을 추가한다는 것
  • 레포지토리
    • 의존 아티팩트 파일은 로컬 레포지토리 확인 후 원격 중앙 레포지토리에서 파일을 다운로드
    • 메이븐을 관리하는 아파치 재단에서 중앙 레포지토리에 아티팩트 파일을 등록하는 방법을 제공
  • 의존 전의 (Transitive Dependencies)
    • 의존에 설정한 아티팩트가 다시 의존하는 파일을 포함
    • 메이븐은 의존 대상이 다시 의존하는 대상도 함께 다운로드
  • 기본 폴더 구조
    • src/main/java
    • src/main/resources
    • src/main/webapp

 

2. Gradle

  • gradlew.bat / gradlew
    • 각각 윈도우와 리눅스에서 사용할 수 있는 실행파일
    • gradle 명령어 대신 사용할 수 있는 wrapper 파일
    • 이 파일로 gradle 설치 없이 gradle 명령 실행 가능

 

3. Bean

  • 스프링은 객체를 생성/관리/초기화하는 기능을 제공
  • Bean : 스프링이 생성하는 객체

 

4. 애노테이션

  • @Configuration
    • 해당 클래스를 스프링 설정 클래스로 지정
  • @Bean
    • Bean 객체에 대한 정보를 담고 있는 메서드를 나타냄
    • 해당 메서드가 생성한 객체를 스프링이 관리
    • 해당 메서드는 객체를 생성하고 알맞게 초기화해야함

 

5. 클래스

  • AnnotationConfigApplicationContext 클래스
    • 자바 설정에서 정보를 읽어와 bean 객체를 생성/관리
    • 해당 객체를 생성할 때 클래스를 생성자 파라미터로 전달하면 @Bean 설정 정보를 읽어 객체를 생성/초기화
    • getBean(이름, 타입) : 생성한 bean을 검색할 때 사용

 

6. 스프링 컨테이너

  • ApplicationContext/BeanFactory
    • 빈 객체의 생성/초기화/보관/제거 등을 관리
    • 이를 컨테이너라고도 부름
  • 스프링 컨테이너
    • 내부적으로 빈 객체와 빈 이름을 연결하는 정보를 가짐
    • 객체 관리를 위한 다양한 기능 제공
    • 이름과 실제 객체의 관계, 실제 객체의 생성/초기화/의존 주입 등

 

7. 싱글톤

  • 별도의 설정의 없을 시 스프링은 한 개의 bean 객체만 생성