해당 글은
React.js, 스프링 부트, AWS로 배우는 웹 개발 101, 김다정, 에이콘
을 토대로 작성했습니다.
@SpringBootApplication 어노테이션이 달려있으면 스프링 부트를 설정하는 클래스이다.
이 클래스의 패키지를 베이스 패키지라고 한다.
베이스 패키지와 그 하위 패키지
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication // 해당 어노테이션이 있는 패키지(package com.example.demo)를 베이스 패키지로 간주
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
여기서 베이스 패키지는 com.example.demo이다.
따라서 com.example.demo.~~~ 는 하위 패키지가 되고,
하위 패키지에서 자바 빈을 찾아 스프링 의존성 주입 컨테이너 오브젝트 (ApplicationContext)에 등록한다.
@Autowired 어노테이션을 이용하면 자동으로 다른 오브젝트를 찾아 연결해준다.
스프링은 @Component를 통해 자동으로 자바 빈을 찾아 등록하게 해주는데,
@ComponentScan 어노테이션이 특정 클래스에 있어야 컴포넌트를 스캐닝 할 수 있다.
자바 빈은 간단히 말해 getter/setter를 나타내는 클래스(Entity, Member 등등)를 나타낸다.
@SpringBootApplication 어노테이션이 @ComponentScan 어노테이션을 포함하고 있어서 따로 어노테이션을 작성할 필요는 없다.
관리하고 싶은 빈의 클래스 상단에 @Component를 추가해주면 자동으로 이 오브젝트를 스프링에 빈으로 등록할 수 있다.
@Autowired를 사용하지 않는 경우가 있는데, 자동으로 등록하면 엔지니어가 오브젝트를 어느 클래스에서 사용하는지 정확히 판단하기 위해서이다. 이 경우는 직접 빈으로 등록해주기 위해 @Bean 어노테이션을 사용한다.
@Bean은 오브젝트를 어떻게 생성하는지, 매개변수를 어떻게 넣는지 등의 설정을 할 수 있다.
요약하자면
@SpringBootApplication으로 스프링을 등록,
@Component를 사용하면 자바 빈을 등록하고,
@Autowired를 통해 자동으로 다른 오브젝트를 찾아 연결해준다.
@Bean을 통해 직접적으로 빈으로 등록이 가능하다.
'Drawing note' 카테고리의 다른 글
[웹 개발/스터디] 이클립스에서 lombok 라이브러리 설치 방법 (0) | 2022.04.03 |
---|---|
[웹 개발/스터디] 빌드 자동화 Gradle과 lombok 라이브러리 (0) | 2022.04.01 |
[웹 개발/스터디] 스프링 프레임워크와 의존성 주입 (0) | 2022.04.01 |
[웹 개발/스터디] 서버(Server) / 자바 서블릿(Servlet) 엔진 (0) | 2022.03.07 |
[웹 개발/스터디] 자바스크립트 오브젝트 노테이션 JSON (0) | 2022.03.07 |
댓글