Develop/Spring+JPA

[Spring 5 프로그래밍 입문] chapter 2 - 스프링 시작하기

연로그 2022. 5. 21. 14:41
반응형

목차

  • chapter 2: 스프링 시작하기
    • 빌드와 의존 전이
    • Spring bean 등록하기
    • Spring은 객체 컨테이너다?
    • 싱글톤 객체

 


Chapter 2 - 스프링 시작하기

 

📚 빌드와 의존 전이

빌드 도구에는 크게 Ant, Maven, Gradle이 있다.
요즘에는 Maven과 Gradle을 많이 사용하는 편이다.

 

📕 Maven

  • 설정 정보 관리 파일: pom.xml
  • 코드 컴파일/실행 시 <dependency>로 설정한 아티팩트 파일 사용
  • 로컬 레포지토리에 .jar 파일이 존재하면 해당 파일 사용
  • 로컬 레포지토리에 존재하지 않으면 메이븐 원격 중앙 레포지토리에서 다운받음

 

의존 전이; Transitive Dependencies
<dependency>를 통해 아티팩트 파일을 다운 받을 때, 해당 아티팩트가 의존하는 아티팩트까지 다운로드 한다. 의존하는 대상 뿐만 아니라 의존 대상이 의존하는 대상까지 함께 다운로드되므로 의존 전이라고 표현한다.

 

📒 Gradle

  • 설정 정보 관리 파일: build.gradle
  • 명령어 실행에 성공하면 프로젝트 루트 폴더에 gradlew.bat, gradlew 래퍼 파일 생성


👉 더 자세한 설명은 블로그 글 로 대체한다.

 

🐱‍💻 Spring bean 등록하기

  • 스프링이 생성하는 객체
  • @Configuration와 @Bean을 이용해 등록할 수 있음
  • @Component를 이용해 등록할 수 있음

 

@Configuration: 스프링 설정 클래스로 지정하는 어노테이션
@Bean: 메서드에 붙여 스프링이 해당 메서드로 객체를 생성해 빈으로 등록
@Component: 클래스에 붙이면 스프링이 객체를 생성해 빈으로 등록

 

example1 - @Bean 어노테이션 이용하기

@Configuration
public class AppContext {
    @Bean
    public CustomClass customClass() {
        return new CustomClass();
    }
}

 

example2 - @Component 어노테이션 이용하기

@Component
public class CustomClass {
    // ...
}

 

🤔 Spring은 객체 컨테이너다?

 

📑 BeanFactory 인터페이스

  • 객체 생성과 검색에 대한 기능 제공
    ex: 객체 검색에 필요한 getBean() 메서드
  • 싱글톤 / 프로토타입 빈 확인 기능 제공

 

📑 ApplicationContext 인터페이스

  • 메시지, 프로필 / 환경 변수 등 처리할 수 있는 기능 추가 정의
  • 빈 객체의 생성, 초기화, 보관, 제거 등을 관리해 Container라고도 불림
  • 다양한 구현체 존재
    • AnnotationConfigApplicationContext: 자바 어노테이션을 이용한 클래스로부터 객체 설정 정보 가져옴
    • GenericXmlApplicationContext: xml로부터 객체 설정 정보 가져옴
    • GenericGroovyApplicationContext: 그루비 코드를 이용해 객체 설정 정보 가져옴

 

📜 컨테이너란?

  • 객체를 생성 및 관리하며 의존 관계를 연결해주는 것.
  • 이 책에서는 BeanFactory와 ApplicationContext 등을 스프링 컨테이너라고 표현한다.

 

🌱 싱글톤 객체

  • 싱글톤: 단일 객체(single object)
  • 스프링은 Bean 객체 단 하나만 생성하는 것이 디폴트 설정
  • 이를 싱글톤 범위를 갖는다고 표현
프로토타입 범위를 갖는 빈에 대해서는 6장에서 다루겠다.

 


이 글은 최범균 님의 '스프링5 프로그래밍 입문'을 보고 정리하는 글 입니다.

반응형