@SpringBootApplication是springboot啟動類,包括三個注解,他們的作用分別是:
@Configuration:表示將該類作用springboot配置文件類
@EnableAutoConfiguration:表示程序啟動時,自動加載springboot默認的配置
@ComponentScan:表示程序啟動是,自動掃描當前包及子包下所有類
@EnableDiscoveryClient && @EnableEurekaClient
@EnableDiscoveryClient基於spring-cloud-commons,@EnableEurekaClient基於spring-cloud-netflix,如果選用的注冊中心是eureka,那么就推薦@EnableEurekaClient,如果是其他的注冊中心,那么推薦使用@EnableDiscoveryClient。
@ComponentScan && @Configuration && @EnableAutoConfiguration
@ComponentScan 如果不設置basePackage的話 默認會掃描包的所有類,所以最好還是寫上basePackage (@componentScan({" ... "}),減少加載時間。默認掃描**/*.class
路徑 比如這個注解在com.wuhulala 下面 ,那么會掃描這個包下的所有類還有子包的所有類,比如com.wuhulala.service包的應用
@Configuration 表示這個類中定義了Bean,會把這個類中bean加載到spring容器中
@EnableAutoConfiguration表示 會在你開啟某些功能的時候自動配置,這個注解告訴Spring Boot根據添加的jar依賴猜測你想如何配置Spring。由於spring-boot-starter-web添加了Tomcat和Spring MVC,所以auto-configuration將假定你正在開發一個web應用,並對Spring進行相應地設置。
@Mapper && @MapperScan
Mapper類上面添加注解@Mapper,這種方式要求每一個mapper類都需要添加此注解
使用@MapperScan可以指定要掃描的Mapper類的包的路徑(@MapperScan("com.demo.*.mapper") || @MapperScan("com.test.*.mapper", "com.demo.*.mapper"))
@EnableTransactionManagement && @Transactional
Spring Boot 使用事務非常簡單,首先使用注解 @EnableTransactionManagement (啟注解事務管理,等同於xml配置方式的 <tx:annotation-driven />)開啟事務支持后,然后在訪問數據庫的Service方法上添加注解 @Transactional 便可。
@Async && @EnableAsync
@EnableAsync注解的意思是可以異步執行,就是開啟多線程的意思。可以標注在方法、類上。
為了讓@Async注解能夠生效,需要在Spring Boot的主程序中配置@EnableAsync
@Async所修飾的函數不要定義為static類型,這樣異步調用不會生效
@Bean && @Configuration
@Bean標注在方法上(返回某個實例的方法),等價於spring的xml配置文件中的<bean>
,作用為:注冊bean對象
@Configuration標注在類上,相當於把該類作為spring的xml配置文件中的<beans>
,作用為:配置spring容器(應用上下文)
@GetMapping && @PostMapping
Spring4.3中引進了{@GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping},來幫助簡化常用的HTTP方法的映射,並更好地表達被注解方法的語義。
@GetMapping是一個組合注解,是@RequestMapping(method = RequestMethod.GET)的縮寫。該注解將HTTP Get 映射到 特定的處理方法上。
@GetMapping是一個組合注解,是@RequestMapping(method = RequestMethod.POST)的縮寫。該注解將HTTP Post映射到 特定的處理方法上。
@LoadBalanced
Spring Cloud的commons模塊提供了一個@LoadBalanced注解,方便我們對RestTemplate添加一個LoadBalancerClient,以實現客戶端負載均衡。通過源碼可以發現這是一個標記注解,我們可以通過ribbon實現客戶端的負載均衡功能。