Spring Boot基礎配置——@SpringBootApplication底層淺談

@SpringBootApplication註解是加在項目啓動類上的。@SpringBootApplication實際上是一個組合註解,定義如下:

@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {
		@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
		@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {
	......
}

這個註解是由3個註解組成的。

1、第一個是@SpringBootConfiguration,它的定義如下:

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration
public @interface SpringBootConfiguration {

}

原來就是一個@Configuration,所以@SpringBootConfiguration的功能就是表明這是一個配置類,開發者可以在這個類中配置Bean。從這個角度來講,這個類所扮演的角色有點類似於Spring中的applicationContext.xml文件的角色。

2、第二個註解是@EnableAutoConfiguration ,表示開啓自動化配置。SpringBoot中的自動化配置是非入侵式的,在任意時刻,開發者都可以使用自定義配置代替自動化配置中的某一個配置。

3、第三個註解@ComponentScan ,完成包的掃描,也是Spring中的功能。由於@ComponentScan註解默認掃描的類都位於類所在包的下面,因此建議在實際項目開發中把項目啓動類放在根包中。如下圖所示:
在這裏插入圖片描述

雖然項目的啓動類也包含@Configuration註解,但是開發者可以創建一個新的類專門用來配置Bean,這樣便於配置的管理。這個類只需要加上@Configuration註解即可。代碼如下:

package com.learn;

import org.springframework.context.annotation.Configuration;

@Configuration
public class MyConfig {
    
}

項目啓動類中的@ComponentScan註解,除了掃描@Service、@Repository、@Component、@Controller和@RestController等之外,也會掃描@Configuration註解的類。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章