@SpringBootApplication 핵심 노트

A, 봄 부팅 기본 지식

  1. 무엇 것은 springboot
    Springboot 많은 시리즈의 스프링 프레임 워크의 통합이다, 새로운 프로그래밍 사양 프레임 워크 고려. 그것은 간단한 당신이 시스템을 실행할 수있는 독립적 인 생산 수준의 응용 프로그램을 만들 수 있습니다 많은 스프링 프레임 워크의 구성을 단순화합니다.
    Springboot 실행하는 항아리를 직접 실행 톰캣, 당신은 전쟁 패키지 싸움을 할 필요가 없습니다 기본을 만들었습니다. XML 설정 파일은, springboot 자동으로 패키지 경로를 검색 할 수 있습니다 할 필요가 없습니다 복제 및 주제에 주입하고, 자동으로 구성 다음과 같은 클래스 패스 항아리 패키지에 따라 수행 할 수 있습니다.

  2. 역사의
    SpringBoot은 주로 빠르게 분산의 즉각적인 요구를 충족하기 위해 마이크로 서비스를 개발, 오는 최근 몇 년 동안 개발되고있다. : 2014 springboot는 springboot1.x 시대 다음은 주요 특징 springboot 버전 변경이로 상승하기 시작했다
    1.x의 시대 XML을
    2.X 비즈니스 메모, XML의 기본적인 구성
    3.x를, 자바 클래스의 4.x의 구성
    5.x의 응답이 비동기 프로그래밍 시대

두, 봄 부팅 코어 노트
처음 SpringBoot의 연락처로 우리의 많은 사람들이 IDEA 웹 프로젝트와 springboot을 생성, 쓰기은 HelloWorld 직접 실행할 수 있습니다. 너무 많이하지 SpringMVC 구성. 이 방법을 수행하는 것입니다 ???

@SpringBootApplication
클래스 프로젝트를 시작,이 댓글이 있습니다 @SpringBootApplication을, 주석이 springboot 주석의 핵심입니다. 주로 클래스 다음의 두 가지 사항에 @EnableAutoConfiguration을 두 개의 노트가 @SpringBootConfiguration와;에서 Ctrl 누른 상태에서 선택 @SpringBootApplication는 SpringBootApplication.class를 입력합니다.

  1. @SpringBootConfiguration
    springboot 구성 클래스 노트, 분석에 Ctrl 키를 누른 상태로는, @ 구성 클래스가 나타내는 @Configuration 주석 인터페이스가있을 것 "구성 클래스를." 때 @Configuration 주석 클래스, 클래스는 클래스가 배치 나타냅니다. 우리는 구성 파일의 구성을 쓸 수 있지만 대신 클래스 클래스 파일이다가 없습니다. 이 @Configuration 노트, 클래스 스프링이 자동으로 용기에 추가 된 컨테이너에 의해 호스팅 통합.

  2. @EnableAutoConfiguration
    springMVC 프로젝트, 당신은 springMVC 프로필을 볼 수 있습니다 : spring.xml을 mybatis.xml 등, springboot 비슷한 구성 파일을 필요로하지 않는 이유는, 당신이 당신의 자신을 실행할 수 있습니까?
    springboot가 자동으로 우리가 자동으로 구성하기 위해 구성 할 수 있기 때문에, 우리는 수동으로 상자의 결과를 달성하기 위해 자신을 구성 할 필요가 없습니다. 이 springboot 자동 구성입니다.
    @EnableAutoConfiguration 코멘트는 자동 구성을 springboot.

예를 들면 :

1.@AutoConfigurationPackage 将自动将需要的包及子包纳入spring容器中
		     通过getPackageName()方法
2.AutoConfigurationImportSelector   自动引入第三方依赖(jar包, 配置)
//纳入到扫描器scan
 public String[] selectImports(AnnotationMetadata annotationMetadata) {
        if (!this.isEnabled(annotationMetadata)) {
            return NO_IMPORTS;
        } else {
            AutoConfigurationMetadata autoConfigurationMetadata = AutoConfigurationMetadataLoader.loadMetadata(this.beanClassLoader);
            AutoConfigurationImportSelector.AutoConfigurationEntry autoConfigurationEntry = this.getAutoConfigurationEntry(autoConfigurationMetadata, annotationMetadata);
            return StringUtils.toStringArray(autoConfigurationEntry.getConfigurations());
        }
    }
总结:
   编写项目时,springMVC 需要手动在代码中对三方依赖进行配置,但是springboot可以自动进行配置
   a. 自己写的代码,@SpringBootConfiguration会扫描配置 ,纳入Spring容器,实现自动配置。
   b. 第三方依赖的jar或配置 
      @EnableAutoConfiguration 会自动配置 不需要自己写spring.xml ,mybatis.xml等配置文件 。

셋째, 어떻게 자동 조립
HttpEncodingAutoConfiguration 클래스
@Configuration : 구성 클래스, 이러한 컨테이너 스프링의 포함이다
@EnableConfigurationProperties (HttpEncodingProperties.class) UTF-8 (즉, 자동 조립)에서 HttpEncodingProperties 부호화 배치
HttpEncodingProperties : 수정 방법
application.propreties에서 = UTF-16에서 spring.http.encoding.charset
프리픽스 속성 이름 == + "리드 프로필 소스 : 접두어 파일 모두

  配置文件执行的条件:  @Conditional 条件
    @ConditionalOnWebApplication      是web应用
	@ConditionalOnClass(CharacterEncodingFilter.class)    项目中存在CharacterEncodingFilter该类
	@ConditionalOnProperty(prefix = "spring.http.encoding", value = "enabled", matchIfMissing = true)
	
	@Bean
	@ConditionalOnMissingBean(CharacterEncodingFilter.class)
	public CharacterEncodingFilter characterEncodingFilter() {
		CharacterEncodingFilter filter = new OrderedCharacterEncodingFilter();
		filter.setEncoding(this.properties.getCharset().name());
		filter.setForceRequestEncoding(this.properties.shouldForce(Type.REQUEST));
		filter.setForceResponseEncoding(this.properties.shouldForce(Type.RESPONSE));
		return filter;
	}
    将该方法配置 ,@Bean 纳入spring 容器中,使方法生效

 总结:  Configuration 有很多条件,@Conditional当这些条件都满足时,自动装配生效
        可以通过yml properties 的文件修改, ‘prefix的值 + 属性名’  修改配置
게시 16 개 원래 기사 · 원의 찬양 3 · 조회수 538

추천

출처blog.csdn.net/outdata/article/details/100750936