반응형
목차
- 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 프로그래밍 입문'을 보고 정리하는 글 입니다.
반응형
'Develop > Spring+JPA' 카테고리의 다른 글
[Spring] @Aspect는 컴포넌트 스캔 대상일까? (4) | 2022.05.25 |
---|---|
[Spring 5 프로그래밍 입문] chapter 3, 4 - 의존 주입 (4) | 2022.05.21 |
[Spring] Spring의 트랜잭션 관리 (feat: @Transactional) (6) | 2022.05.08 |
[Spring] @RequestBody가 빈 생성자가 필요한 이유 (hint. ObjectMapper) (1) | 2022.05.01 |
[Spring] 생성자 주입 vs 필드 주입 vs 수정자 주입 (0) | 2022.04.28 |