스프링 부트(Spring Boot)는 스프링(Spring) 프레임워크의 확장으로, 스프링 애플리케이션을 더 쉽게 개발하고 구성할 수 있도록 도와주는 도구입니다. 스프링 부트에서도 스프링 프레임워크의 핵심 개념 중 하나인 "Bean"을 사용하며, 스프링 부트 애플리케이션에서 Bean을 정의하고 관리하는 방법을 아래에서 설명합니다.
자동 구성 (Auto Configuration): 스프링 부트는 다양한 환경에서 애플리케이션을 자동으로 구성하기 위한 "자동 구성"을 제공합니다. 따라서 많은 Bean은 자동으로 생성되며, 개발자는 일부 구성만 수정하거나 추가할 수 있습니다.
내장된 컨테이너 (Embedded Container): 스프링 부트는 내장된 웹 서버(Tomcat, Jetty, 등)를 사용하여 웹 애플리케이션을 실행하므로, 웹 관련 Bean도 자동으로 설정됩니다.
외부 설정 (External Configuration): 스프링 부트는 외부 설정 파일(properties 또는 YAML)을 사용하여 Bean의 속성을 구성할 수 있도록 지원합니다.
@SpringBootApplication
어노테이션을 사용한 클래스에서 시작하여 자동 구성을 수행합니다. 이 어노테이션은 @ComponentScan
과 @EnableAutoConfiguration
을 포함하고 있으며, @ComponentScan
은 Bean 스캔을 활성화하고, @EnableAutoConfiguration
은 자동 구성을 활성화합니다.@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
@Bean
어노테이션을 사용하거나 @Component
, @Service
, @Repository
, @Controller
와 같은 스프링의 컴포넌트 어노테이션을 사용하여 Bean을 생성하고 등록할 수 있습니다.@Configuration
public class MyConfig {
@Bean
public MyBean myBean() {
return new MyBean();
}
}
또는
@Service
public class MyService {
// ...
}
@Autowired
어노테이션을 사용하여 Bean 간의 의존성 주입을 지원합니다.@Service
public class MyService {
private final MyRepository myRepository;
@Autowired
public MyService(MyRepository myRepository) {
this.myRepository = myRepository;
}
// ...
}
application.properties
또는 application.yml
파일을 사용하여 Bean의 속성을 외부에서 구성할 수 있습니다.# application.properties
myapp.name=My Application
# application.yml
myapp:
name: My Application
@Service
public class MyService {
@Value("${myapp.name}")
private String appName;
// ...
}
스프링 부트는 자동 구성과 외부 설정을 통해 애플리케이션 개발을 간편하게 만들어주며, 개발자가 Bean을 선언하고 관리하는데 있어서도 스프링의 기본적인 개념을 그대로 활용합니다.