當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
SpringBoot核心注解介绍
生活随笔
收集整理的這篇文章主要介紹了
SpringBoot核心注解介绍
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
我們看一下SpringBoot核心注解的一個介紹,其實我們之前在SpringBoot當中呢,我們用過這些注解了,只是我們沒有去說一下每個注解的詳細含義,那么我們在這里把它補齊,我們打開我們的代碼,我們看哪個呢,啟動類開始,我們看一下啟動類這里,加一個@SpringBootApplication的注解,我們先把他加進來,到底是干嘛用的,其實就是標記為你當時在哪個類上加了注解了,表示當前類是SpringBoot的一個啟動類,代表的是SpringBoot的啟動類,那么啟動類在啟動的過程當中,要做很多事,那他在啟動當中要做什么事呢,我們再看,我們打開這個注解,我們點開,看看他的源碼,在這個注解當中呢@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 {他又被這么多注解所修飾,所定義,換句話說,我這里所修飾的注解,都具備這個特點的,注解Annotation的一個特點,那么在SpringBootApplication注解上,有這么多注解,一個是@SpringBootConfiguration,還有一個是@EnableAutoConfiguration,還有一個@ComponentScan,這三個是我們所關心的,先來看一下@SpringBootConfiguration,這個注解是干嘛用的,我們點開他看一下,@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration
public @interface SpringBootConfiguration {在這個注解當中呢,它是一個空的,什么都沒有,但是關鍵是,他被另一個注解所定義了,就是這個@Configuration,這個注解是非常重要的,其實SpringBootConfiguration,具備了@Configuration的能力了,那么這個注解是非常重要的一個注解,其實我們就可以注意一下,SpringBootConfiguration的作用就是,通過ben對象來獲取配置信息,之所以他具備這個能力,是因為他被@Configuration修飾了,這個注解是什么呢,通過bean對象完成或者獲取配置信息的能力其實是@Configuration的,這個大家對他并不陌生,它是在Spring3.0以后的一個注解,這個注解最大的特點是,來代替我們的XML配置文件,通過對bean對象的操作,替代spring中的xml文件,所以我們在講SpringBoot的時候,我們也用過這個注解@SpringBootConfiguration,然后你哪個類加上了@SpringBootConfiguration了,都會對這個類的內容做一個觸發,我們當時使用@Configuration和@Bean注解,大家應該有印象,所以這個注解是非常重要的,所以正因為有這個注解的存在,我們的配置文件當中,就沒有了xml文件,@Configuration一個介紹,這樣我們就把SpringBootConfiguration講完了,我們再來看@EnableAutoConfiguration,這個注解干嘛用的呢,我們點開他的源碼看一下@SuppressWarnings("deprecation")
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import(EnableAutoConfigurationImportSelector.class)
public @interface EnableAutoConfiguration {在這里他有一個@AutoConfigurationPackage,然后里面還有其他的,我就不往下看了,這里直接解釋一下注解的作用,這個注解的作用其實就是根據當前項目所導入的jar包,我們的項目當中是一個maven項目,導入了一些jar包,它會根據我們所導入的jar包,創建我們項目的啟動環境,舉個例子,我們這里不是導入了一個WEB啟動器嗎,我們都知道boot中的WEB啟動器,包含了MVC信息的,但是我們現在并沒有對MVC配置的配置文件,包括組件掃描,還有web.xml里面配置dispatcherServlet,這些我們都沒有,那么都沒有這些信息怎么去配置的呢,其實就是通過EnableAutoConfiguration來完成的,在這里會根據我們的需要,根據我們的jar包結構,來對我們的WEB環境做一個初始化的,所以這個EnableAutoConfiguration的作用呢,就是幫我們初始化一個WEB環境,完成一些初始化環境的配置,這個是EnableAutoConfiguration的作用,我們再打開看,這個@ComponentScan@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
@Repeatable(ComponentScans.class)
public @interface ComponentScan {這個注解的作用干嘛的呢,不用在往上看了,我們說一下這個注解的作用,其實這個注解就比較簡單了,就是完成Spring的組件掃描,他來替代什么呢,替代我們之前在XML文件中,配置組件掃描的配置,還記得那個配置嗎,我們需要用到一個context命名空間下的,然后有一個component-scan,然后package等于一個包名,然后他會根據包來做組件的掃描,那么這一個配置呢,<context:component-scan base-package="" />所以也就有他這樣一個注解的存在,所以我們也不需要配置文件了,也不需要在配置文件里去配他了,所以這些注解就構成了我們SpringBoot在啟動時一些核心配置的支持,所以我們的SpringBoot你會發現SpringBoot項目當中,Spring配置文件一個都不用了,原因就是這些注解的一個作用,才能出現這個效果,這是根配置相關的一些注解,我們通過名字也能看到他的一些含義,在這里我們再來介紹一個注解,比如說這個Controller,我們用到了一個@RestController的注解,我們點開他來看一看,其實你會發現這個注解是非常簡單的,它是被兩個注解所定義@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {一個是@Controller,一個是@ResponseBody,Controller不用說了,我們用過SpringMVC的都知道,表示的是一個處理單元,處理器或者是控制器,然后@ResponseBody呢,表示你當前的返回都是以一個JSON的格式,來做一個響應,所以把這兩個注解都耦合到RestController里,如果你的Controller被RestController所修飾,首先你這個類是Controller,然后下面所有的方法都會以JSON的數據返回,就是我們這里為什么加了RestController,就是我們方法不用加ResponseBody的一個原因,所以原因就是在這,他的這兩個注解里包含了這兩個注解,他有兩個特點,第一個表示是一個Controller,表示當前的這個Controller下所有的方法都會以JSON的格式響應,所以這個注解理解起來也是比較簡單的,那么我們目前涉及的一些核心注解呢,就是這一塊,其實最關鍵的就是啟動類里的注解,可以花點時間看一看,也不是什么太難的事,其實我們主要是對之前的SpringBoot做一個補充,看一看源代碼,相信大家自己也可以通過源代碼看出里面的特點
?
總結
以上是生活随笔為你收集整理的SpringBoot核心注解介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: logback日志记录器讲解
- 下一篇: gradle idea java ssm