Spring Boot註解

在Spring Boot中幾乎可以完全棄用xml配置文件,在這裏總結下常用的註解。

Spring最開始是爲了解決EJB等大型企業框架對應用程序的侵入性
因此大量依靠配置文件來“非侵入式”得給POJO增加功能
從Spring 3.x開始,Spring被外界最爲詬病的一點就是配置繁多,號稱“配置地獄”

從Spring 4.x開始,Spring.io提供了三種方式編織Bean:

  • 利用註解:隱式配置,例如:@Autowired、@Bean、@Component等,通過註解來簡化xml文件。
  • 利用Java文件:顯示配置,比xml配置的優勢是具備類型安全
  • 利用傳統的xml配置文件

註解(annotations)列表

@ResponseBody

用該註解修飾的函數,會將結果直接填充到HTTP的響應體中,一般用於構建RESTful的api;

@Controller

用於定義控制器類,在spring 項目中由 控制器  負責   將用戶發來的URL請求    轉發到    對應的服務接口(service層)

一般情況下@Controller與  @RequestMapping 一起使用,用於指定    URL對應的處理方法或者處理類

@Controllerpublic class Index {
    @RequestMapping(value ="/", method = RequestMethod.GET)
    @ResponseBody
    public String hello(){
        return "hello world";
    }
}
@Runwith:

@RestController

與Controller類似,使用這個註解表明是REST接口

@ResponseBody

@RequestMapping

提供路由信息,負責 URL到Controller中的具體函數的映射。

@EnableAutoConfiguration

Spring Boot自動配置(auto-configuration):嘗試根據你添加的jar依賴自動配置你的Spring應用。例如,如果你的classpath下存在HSQLDB,並且你沒有手動配置任何數據庫連接beans,那麼我們將自動配置一個內存型(in-memory)數據庫”。你可以將@EnableAutoConfiguration或者@SpringBootApplication註解添加到一個@Configuration類上來選擇自動配置。如果發現應用了你不想要的特定自動配置類,你可以使用@EnableAutoConfiguration註解的排除屬性來禁用它們。

@ComponentScan

表示將該類自動發現(掃描)並註冊爲Bean,可以自動收集所有的Spring組件,包括@Configuration類。我們經常使用@ComponentScan註解搜索beans,並結合@Autowired註解導入。

@Configuration

相當於傳統的xml配置文件,如果有些第三方庫需要用到xml文件,建議仍然通過@Configuration類作爲項目的配置主類——可以使用@ImportResource註解加載xml配置文件。

@SpringBootApplication

相當於@EnableAutoConfiguration、@ComponentScan和@Configuration的合集。

@Import

用來導入其他配置類。

@ImportResource

用來加載xml配置文件。

@Autowired

自動導入依賴的bean

@Service

一般用於修飾service層的組件

@Repository

使用@Repository註解可以確保DAO或者repositories提供異常轉譯,這個註解修飾的DAO或者repositories類會被ComponetScan發現並配置,同時也不需要爲它們提供XML配置項。
@value註解來讀取application.properties裏面的配置


@ControllerAdvice:包含@Component。可以被掃描到。統一處理異常


@ExceptionHandler(Exception.class):用在方法上面表示遇到這個異常就執行以下方法。

@PathVariable:路徑變量。

@RequestParam用在方法的參數前面。

@AutoWired  byType方式。把配置好的Bean拿來用,完成屬性、方法的組裝,它可以對類成員變量、方法及構造函數進行標註,完成自動裝配的工作。當加上(required=false)時,
就算找不到bean也不報錯。

@Component:泛指組件,當組件不好歸類的時候,我們可以使用這個註解進行標註。一般公共的方法會用上這個

@ResponseBody表示該方法的返回結果直接寫入HTTP response body中一般在異步獲取數據時使用,
在使用@RequestMapping後,返回值通常解析爲跳轉路徑,加上@responsebody後返回結果不會被解析爲跳轉路徑,而是直接寫入HTTP response body中。比如異步獲取json數據,加上@responsebody後,會直接返回json數據。

@Profiles   Spring Profiles提供了一種隔離應用程序配置的方式,並讓這些配置只能在特定的環境下生效。               任何@Component或@Configuration都能被@Profile標記,從而限制加載它的時機。

@RestController和@RequestMapping註解  :
4.0重要的一個新的改進是@RestController註解,它繼承自@Controller註解。4.0之前的版本,spring MVC的組件都使用@Controller來標識當前類是一個控制器servlet。使用這個特性,我們可以開發REST服務的時候不需要使用@Controller而專門的@RestController。
當你實現一個RESTful web services的時候,response將一直通過response body發送。爲了簡化開發,Spring 4.0提供了一個專門版本的controller。下面我們來看看@RestController實   現的定義:
         @RequestMapping 註解提供路由信息。它告訴Spring任何來自"/"路徑的HTTP請求都應該被映射到 home                方法。
         @RestCollentror 註解告訴Spring以字符串的形式渲染結果,並直接返回給調用者。
         @RestController 和 @RequestMapping 註解是Spring MVC註解(它們不是Spring Boot的特定部分)

REST服務:
     REST是一套用來創建Web Service的方法。
       REST式的Web Service的主旨是讓事情儘量的簡單化。
  REST式的Web Service使用HTTP裏的方法:GET, POST, DELETE, PUT。你不需要使用URL或請求的內容來指定這個方法。
  REST式的Web Service使用HTTP狀態碼作爲返回值。
  REST式的Web Service調用產生的HTTP請求內容只是用於服務數據不是用來指明調用方法,目標對象或返回值的。
  使用REST方法來開發Web Service的關鍵點是利用HTTP協議的簡單性,而不是去擴展這個協議。你的Web Service調用最終應該是非常的簡單而且非常的易於理解。

    

@Scheduled:spirng定時的註解:
@Scheduled(fixedRate = 5000)
這個註解在容器啓動時便會生效,5秒執行一次任務.如果第一次任務時間爲7秒從10:00執行到10:07,那麼第二次任務爲2秒的話,則從10:07執行到10:10(其中1秒爲任務的輪詢時間).

@Scheduled(cron = " 0 22 13 ? * *")
這個註解是在容器啓動後的指定時間執行

@EnableAutoConfiguration註解: 第二個類級別的註解是 @EnableAutoConfiguration 。這個註解告訴Spring Boot根據添加的jar依賴猜測你想如何配置Spring。

@PathVariable:  @PathVariable 可以將 URL 中佔位符參數綁定到控制器處理方法的入參中:URL 中的 {xxx} 佔位符可以通過
                              @PathVariable("xxx") 綁定到操作方法的入參中。

@JsonlgnoreProperties(ignoreUnknown=true): 就是說這個屬性不進行json的轉化,忽略這個屬性的json轉化。 有意思作用呢? 主要是防止一些Json轉換異常錯誤


@RunWith(): 在使用所有註釋前必須使用@RunWith(SpringJUnit4ClassRunner.class),讓測試運行於Spring測試環境 Spring
                         架在org.springframework.test.annotation 包中提供了常用的Spring特定的註解集,
@SpringBootTest():

@TestPropertySource()


@Configuration把一個類作爲一個IoC容器,它的某個方法頭上如果註冊了@Bean,就會作爲這個Spring容器中的Bean。
@Scope註解 作用域
@Lazy(true) 表示延遲初始化
@Service用於標註業務層組件、 
@Controller用於標註控制層組件(如struts中的action)
@Repository用於標註數據訪問組件,即DAO組件。
@Component泛指組件,當組件不好歸類的時候,我們可以使用這個註解進行標註。
@Scope用於指定scope作用域的(用在類上)
@PostConstruct用於指定初始化方法(用在方法上)
@PreDestory用於指定銷燬方法(用在方法上)
@DependsOn:定義Bean初始化及銷燬時的順序
@Primary:自動裝配時當出現多個Bean候選者時,被註解爲@Primary的Bean將作爲首選者,否則將拋出異常
@Autowired 默認按類型裝配,如果我們想使用按名稱裝配,可以結合@Qualifier註解一起使用。如下:
@Autowired @Qualifier("personDaoBean") 存在多個實例配合使用
@Resource默認按名稱裝配,當找不到與名稱匹配的bean纔會按類型裝配。
@PostConstruct 初始化註解
@PreDestroy 摧毀註解 默認 單例  啓動就加載
@Async異步方法調用


@Configuration:
 Spring Boot提倡基於Java的配置。儘管你可以使用一個XML源來調用 SpringApplication.run() ,我們通常建議你使用 @Configuration 類作爲主要源。一般定義 main 方法的類也是主要 @Configuration 的一個很好候選。你不需要將所有的 @Configuration 放進一個單獨的類。 @Import 註解可以用來導入其他配置類。另外,你也可以使用 @ComponentScan 註解自動收集所有的Spring組件,包括 @Configuration 類。
如果你絕對需要使用基於XML的配置,我們建議你仍舊從一個 @Configuration 類開始。
你可以使用附加的 @ImportResource 註解加載XML配置文件。
@Configuration註解該類,等價 與XML中配置beans;用@Bean標註方法等價於XML中配置bean










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