Spring Starter Project
개발에 필요한 환경설정이 거의다 되어 있음(?), 개발자가 복잡한 설정 없이 개발 환경이 준비된다고 함.
그래서 초보 개발자도 쉽게 웹 프로젝트를 만들 수 있다고 함.
( But, 해당 방식보다는 Spring Legacy Project를 실제 개발 업무에서 많이 사용한다고 함.
Spring Legacy Project의 경우 필요한 환경설정을 직접 해야한다고 한다 )
Spring Boot > Spring Starter Project
프로젝트를 생성하면, 메인 메소드가 있는 클래스(프로젝트이름Application)에 다음과 같은 것들을 볼수있다
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
이중에 눈에 띄는 것들
springframework.boot , SpringApplication , SpringBootApplication
autoconfigure.SpringBootApplication 으로 보아
@SpringBootApplication 은 자동설정을 해주는 기능이 있지 않을까 추측해 볼수 있다
@SpringBootApplication
이런식으로 SpringBootApplication이라는 interface가 구성되어 있다
package org.springframework.boot.autoconfigure;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.beans.factory.support.BeanNameGenerator;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.context.TypeExcludeFilter;
import org.springframework.context.annotation.AnnotationBeanNameGenerator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ComponentScan.Filter;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
import org.springframework.core.annotation.AliasFor;
import org.springframework.data.repository.Repository;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
~
~
}
@ComponentScan
@component 어노테이션 및 @Service, @Repository, @Controller 등의 어노테이션을 스캔하여 Bean으로 등록해주는 어노테이션입니다.
@EnableAutoConfiguration
사전에 정의한 라이브러리들을 Bean으로 등록해 주는 어노테이션입니다.
사전에 정의한 라이브러리들 모두가 등록되는 것은 아니고 특정 Condition(조건)이 만족될 경우에 Bean으로 등록합니다.
'Spring' 카테고리의 다른 글
| @Controller, @RestController (0) | 2023.11.12 |
|---|---|
| Spring Tool Suite (STS) 4, 서버( Embedded, Standalone ) (0) | 2023.09.07 |
| springBoot( DB Oracle연동 )프로젝트에서, DB관련 오류메세지 (0) | 2023.04.12 |
| @MapperScan (0) | 2023.02.14 |
| Spring Starter Project와 MySQL연동 (0) | 2022.12.06 |