본문 바로가기
Drawing note

[웹 개발/스터디] 스프링부트 시작하기

by 오늘이 내가 된다. 2022. 4. 3.

해당 글은
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을 통해 직접적으로 빈으로 등록이 가능하다.

 

댓글