SpringBoot 자동화 설정 원리 실현

서론
SpringBoot 가 뭐 예요?
Spring Boot 는 Spring 개발 을 바탕 으로 하 는 모든 프로젝트 의 출발점 이다.Spring Boot 의 디자인 은 가능 한 한 빨리 달 릴 수 있 도록 Spring 응용 프로그램 을 사용 하고 프로필 을 최대한 줄 이기 위 한 것 입 니 다.쉽게 말 하면 SpringBoot 는 새로운 프레임 워 크 가 아 닙 니 다.Maven 이 모든 jar 가방 을 통합 한 것 처럼 spring boot 는 모든 프레임 워 크 를 통합 시 켰 습 니 다.
SpringBoot 네 가지 주요 특성
SpringBoot Starter:그 는 자주 사용 하 는 의존 그룹 을 통합 시 켜 하나의 의존 에 통합 시 켰 습 니 다.그러면 프로젝트 의 Maven 이나 Gradle 구축 에 한꺼번에 추가 할 수 있 습 니 다.자동 설정:SpringBoot 의 자동 설정 특성 은 Spring 4 의 조건 화 설정 에 대한 지원 을 이용 하여 응용 에 필요 한 bean 을 합 리 적 으로 추측 하고 자동화 설정 합 니 다.명령 행 인터페이스:(command-line-interface,CLI):SpringBoot 의 CLI 는 Groovy 프로 그래 밍 언어의 장점 을 발휘 하고 자동 설정 과 결합 하여 Spring 응용 개발 을 더욱 간소화 합 니 다.Actuatir:SpringBoot 응용 프로그램의 모든 특성 을 위해 작은 응용 프로그램 을 구축 합 니 다.그러나 우선,우 리 는 모든 특성 을 신속하게 이해 하고 그들 이 Spring 프로 그래 밍 모델 을 어떻게 간소화 하 는 지 체험 할 수 있다.
Springboot 는'설정 보다 약속 이 낫다'는 원칙 에 따라 일반적인 설정 항목 에 대해 주 해 를 사용 하여 기본 설정 을 하고 xml 설정 을 줄 이거 나 사용 하지 않 으 면 프로젝트 를 빠르게 실행 할 수 있 습 니 다.Springboot 는 또한 대량의 개발 을 위해 자주 사용 하 는 프레임 워 크 를 starter 로 봉 했다.현재 프레임 워 크 를 도입 하면 starter 를 도입 하면 이 프레임 워 크 를 사용 할 수 있다.소량의 설정 만 있 고 심지어 어떠한 설정 도 필요 하지 않다.
소스 코드
@SpringBootApplication
모든 인연@SpringBootApplication 주석.@SpringBootApplication 주 해 는 SpringBoot 의 핵심 주해 입 니 다.현재 실제 프로젝트 개발 에서 이 주석 에 표 시 된 클래스 는 주로 시작 클래스 입 니 다.즉,다음 코드 를 실행 하 는 main 방법 을 입구 로 하고 보통 main 방법 에서 SpringApplication.run()을 사용 하여 전체 응용 을 시작 합 니 다.

@SpringBootApplication
public class InformalEssayApplication {

  public static void main(String[] args) {
    SpringApplication.run(InformalEssayApplication.class, args);
  }

}
@SpringBootApplication 은 복합 주해 또는 파생 주해 입 니 다.다음은 우리 가 이 주 해 를 따라 가서 그것 의 핵심 구성 을 자세하게 살 펴 보 자.

@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 {
	//      
}
실제 개발 프로젝트 에서 변수 이름 을 정의 할 때 일반적으로 이름 을 알려 야 하기 때문에 이 글 의 주제:자동화 설정 에 대해 위 코드 에서 해당 하 는 주 해 를 찾 을 수 있 습 니 다.즉,@EnableAutoConfiguration 입 니 다.
@EnableAutoConfiguration
이 주석 도 파생 주석 입 니 다.그 중에서 관건 적 인 기능 은@Import 에서 제공 합 니 다.가 져 온 AutoConfiguration ImportSelector 의 selectImports()방법 은 SpringFactoriesLoader.loadFactory Names()를 통 해 META-INF/spring.factories 가 있 는 jar 가방 을 모두 검색 합 니 다.spring-boot-autoconfigure-x.x.x.jar 에 이러한 spring.factories 파일 이 있 습 니 다.

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import(AutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {

	String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration";
	Class<?>[] exclude() default {};
	String[] excludeName() default {};
}
이 spring.factories 파일 도 한 그룹의 key=value 형식 입 니 다.그 중 하 나 는 EnableAutoConfiguration 류 의 전체 클래스 이름 이 고,value 는 xxxx AutoConfiguration 의 클래스 이름 목록 입 니 다.이 클래스 이름 들 은 쉼표 로 구 분 됩 니 다.다음 그림 과 같 습 니 다.

총결산
이상 을 종합해 보면@EnableAutoConfiguration 주석 이@SpringBootApplication 을 통 해 Spring Boot 의 시작 클래스 에 간접 적 으로 표 시 된 것 으로 이해 할 수 있 습 니 다.SpringApplication.run(...)내부 에서 selectImports()방법 을 실행 합 니 다.모든 JavaConfig 자동 설정 클래스 의 전체 제한 이름 에 대응 하 는 class 를 찾 은 다음 모든 자동 설정 클래스 를 Spring 용기 에 불 러 옵 니 다.
SpringBoot 자동화 설정 원리 의 실현 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 SpringBoot 자동화 설정 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기