Spring Boot 學習總結 (一)---入口類和@SpringBootApplication
阿新 • • 發佈:2018-12-11
入口類和@SpringBootApplication
SpringBoot通常有一個名為*Application的入口類,入口類裡有一個main方法,這個main方法是一個標準的java應用的入口方法。在main方法中使用SpringApplication.run(*Application.class,args),啟動Spring Boot 應用專案。
@SpringBootApplication是Spring Boot的核心註解,他是一個組合註解。原始碼如下
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.boot.SpringBootConfiguration; import org.springframework.boot.context.TypeExcludeFilter; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.FilterType; import org.springframework.context.annotation.ComponentScan.Filter; import org.springframework.core.annotation.AliasFor; @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 { @AliasFor( annotation = EnableAutoConfiguration.class ) Class<?>[] exclude() default {}; @AliasFor( annotation = EnableAutoConfiguration.class ) String[] excludeName() default {}; @AliasFor( annotation = ComponentScan.class, attribute = "basePackages" ) String[] scanBasePackages() default {}; @AliasFor( annotation = ComponentScan.class, attribute = "basePackageClasses" ) Class<?>[] scanBasePackageClasses() default {}; }
@SpringBootApplication註解主要組合了@Configuration、@EnableAutoConfiguation、@ComponentScan;若不使用@SpringBootApplication註解,則可以再入口類上直接使用@Configuration、@EnableAutoConfiguation、@ComponentScan。
其中@EnableAutoConfiguation讓Spring Boot根據類路徑中的jar包依賴為當前專案進行自動配置。
例如,添加了spring-boot-starter-web依賴,會自動新增Tomcat 和 Spring MVC的依賴,那麼Spring Boot會對Tomcat和Spring MVC進行自動配置。
Spring Boot會自動掃描@SpringBootApplication 所在類的同級包 (如com.springboot.text.myspringboot)以及下級包裡的Bean。建議入口類放置的位置在groupId+rctifactID組合的包名下。
)