SpringBoot項目常用註解

SpringBoot註解

  • @SpringBootApplication 包含了@ComponentScan@Configuration@EnableAutoConfiguration註解

    • Configuration註解通常與@Bean一起使用,使用這兩個註解可以創建一個簡單的Spring配置類,替代Xml配置,也可以使用@ImportResource註解加載xml配置文件
      • @EnableAutoConfiguration

      這個註解告訴Spring Boot根據添加的jar依賴猜測你想如何配置Spring,由於 spring-boot-starter-web 添加了Tomcat和Spring MVC,所以auto-configuration將假定你正在開發一個web應用並相應地對Spring進行設置。Starter POMs和Auto-Configuration:設計auto-configuration的目的是更好的使用”Starter POMs”,但這兩個概念沒有直接的聯繫。你可以自由地挑選starter POMs以外的jar依賴,並且Spring Boot將仍舊盡最大努力去自動配置你的應用。參考spring.factories

      • @ComponentScan註解 見下文 Bean 聲明註解
    • @Value 獲取application.properties配置的屬性的值

 

Bean 聲明註解

  • @Service 業務邏輯層
  • @Component 組件(不容易歸類可以使用該組件)
  • @Repository 數據訪問層
  • @Controller Spring mvc 展現層
  • @Configurable 聲明當前類是一個配置類
  • @ComponentScan("com.yss.ms") 設置自動掃描包下面所有的 (@Service @Component @Repository @Controller) 使用springboot開發時候,啓動類會隱式的指定了掃描時basePackage的路徑,參考@SpringBootApplication
  • @EnableAsync 開啓異步任務支持
  • @PropertySource("classpath:application.properties") 用於指定目錄,指定編碼讀取properties文件
  • @EnableScheduling 註解開啓對計劃任務的支持

Bean 注入註解

  • @Autowired Spring 提供 等同autowire=byType,根據類型的自動注入依賴
  • @Qualifier Spring 提供 等同autowire=byName,當@Autowired註解需要判斷多個 bean類型相同時,就需
    要使用@Qualifier(“xxBean”)來指定依賴的bean的id
  • @Resource 屬於JSR-250標準 作用同@Autowired,是屬於byName類 型的依賴注入,使用方式:
    @Resource(name=”xxBean”),不帶參數是默 認類名首字母小寫
  • @Value("xxxx") 注入普通字符串
  • @Value("${xxx.xxx}") 注入配置文件中字符串
  • @PostConstruct 標註在方法上,在構造函數執行完畢後執行
  • @PreDestroy 標註在方法上,銷燬前執行
  • @Async 異步方法表明,若是在class上則全是
  • @Scheduled 聲明方法是計劃任務
  • @Conditional() 條件註解,當滿足某條件時

Spring MCV

  • @RequestMapping
    用於映射Web請求 返回體,編碼格式都可以在此處設置
    produces = {} 設置返回值json/xml charset 等
  • @RestControlle 組合註解,組合了@Controller和@ResponseBody
  • @ResponseBody 將Controller的方法返回的對象通過適當的轉換(通過配置可以返回Json或XML數據),寫入
    response對象的body數據區
  • @RequestBody 用於讀取request請求的body部分數據(Json串或XML數據),將其轉化爲需要的對象
  • @PathVariable 用來接收路徑參數,api/{id}

 

JUnit4 註解

  • @After 如果在@Before註解方法中分配了額外的資源,那麼在測試執行完後,需要釋放分配的資源,使用@After註解一個public void方法會使該方法在@Test註解方法執行後被執行
  • AfterClass 如果在@BeforeClass註解方法中分配了代價高昂的額外的資源,那麼在測試類中的所有測試方法執行完後,需要釋放分配的資源,使用@AfterClass註解一個public static void方法會使該方法在測試類中的所有測試方法執行完後被執行
  • @Before 使用@Before註解一個public void 方法會使該方法在@Test註解方法被執行前執行
  • @BeforeClass 使用@BeforeClass註解一個public static void 方法,並且該方法不帶任何參數,會使該方法在所有測試方法被執行前執行一次,並且只執行一次
  • @Ignore 對包含測試類的類或@Test註解方法使用@Ignore註解將使被註解的類或方法不會被當做測試執行
  • @Test @Test註解的public void方法將會被當做測試用例,JUnit每次都會創建一個新的測試實例,然後調用@Test註解方法
  • @RunWith 指定測試類使用某個運行器,如:@RunWith(SpringRunner.class)

 

 

Controller 相關注解

@Controller

控制器,處理http請求。

@RestController 複合註解

查看@RestController源碼

源碼我們知道,@RestController註解相當於@ResponseBody+@Controller合在一起的作用,RestController使用的效果是將方法返回的對象直接在瀏覽器上展示成json格式.

@RequestBody

通過HttpMessageConverter讀取Request Body並反序列化爲Object(泛指)對象

@RequestMapping

@RequestMapping 是 Spring Web 應用程序中最常被用到的註解之一。這個註解會將 HTTP 請求映射到 MVC 和 REST 控制器的處理方法上

@GetMapping用於將HTTP get請求映射到特定處理程序的方法註解

註解簡寫:@RequestMapping(value = "/say",method = RequestMethod.GET)等價於:@GetMapping(value = "/say")

GetMapping源碼

是@RequestMapping(method = RequestMethod.GET)的縮寫

@PostMapping用於將HTTP post請求映射到特定處理程序的方法註解

是@RequestMapping(method = RequestMethod.POST)的縮寫

三、取請求參數值

@PathVariable:獲取url中的數據

請求示例:http://localhost:8080/User/getUser/123

@RequestParam:獲取請求參數的值

@Controller
@RequestMapping("/User")
public class HelloWorldController {

}

請求示例:http://localhost:8080/User/getUser?uid=123

@RequestHeader 把Request請求header部分的值綁定到方法的參數上

@CookieValue 把Request header中關於cookie的值綁定到方法的參數上

四、注入bean相關

@Repository

DAO層註解,DAO層中接口繼承JpaRepository<T,ID extends Serializable>,需要在build.gradle中引入相關jpa的一個jar自動加載。

@Service

  • @Service是@Component註解的一個特例,作用在類上
  • @Service註解作用域默認爲單例
  • 使用註解配置和類路徑掃描時,被@Service註解標註的類會被Spring掃描並註冊爲Bean
  • @Service用於標註服務層組件,表示定義一個bean
  • @Service使用時沒有傳參數,Bean名稱默認爲當前類的類名,首字母小寫
  • @Service(“serviceBeanId”)或@Service(value=”serviceBeanId”)使用時傳參數,使用value作爲Bean名字

@Scope作用域註解

@Scope作用在類上和方法上,用來配置 spring bean 的作用域,它標識 bean 的作用域

@Entity實體類註解

@Table(name ="數據庫表名"),這個註解也註釋在實體類上,對應數據庫中相應的表。
@Id、@Column註解用於標註實體類中的字段,pk字段標註爲@Id,其餘@Column。

@Bean產生一個bean的方法

@Bean明確地指示了一種方法,產生一個bean的方法,並且交給Spring容器管理。支持別名@Bean("xx-name")

@Autowired 自動導入

  • @Autowired註解作用在構造函數、方法、方法參數、類字段以及註解上
  • @Autowired註解可以實現Bean的自動注入

@Component

把普通pojo實例化到spring容器中,相當於配置文件中的

雖然有了@Autowired,但是我們還是要寫一堆bean的配置文件,相當麻煩,而@Component就是告訴spring,我是pojo類,把我註冊到容器中吧,spring會自動提取相關信息。那麼我們就不用寫麻煩的xml配置文件了

五、導入配置文件

@PropertySource註解

引入單個properties文件:

@PropertySource(value = {"classpath : xxxx/xxx.properties"})

引入多個properties文件:

@PropertySource(value = {"classpath : xxxx/xxx.properties","classpath : xxxx.properties"})

@ImportResource導入xml配置文件

可以額外分爲兩種模式 相對路徑classpath,絕對路徑(真實路徑)file

注意:單文件可以不寫value或locations,value和locations都可用

相對路徑(classpath)

  • 引入單個xml配置文件:@ImportSource("classpath : xxx/xxxx.xml")

  • 引入多個xml配置文件:@ImportSource(locations={"classpath : xxxx.xml" , "classpath : yyyy.xml"})

絕對路徑(file)

  • 引入單個xml配置文件:@ImportSource(locations= {"file : d:/hellxz/dubbo.xml"})

  • 引入多個xml配置文件:@ImportSource(locations= {"file : d:/hellxz/application.xml" , "file : d:/hellxz/dubbo.xml"})

取值:使用@Value註解取配置文件中的值

@Value("${properties中的鍵}")
private String xxx;

@Import 導入額外的配置信息

功能類似XML配置的,用來導入配置類,可以導入帶有@Configuration註解的配置類或實現了ImportSelector/ImportBeanDefinitionRegistrar。

使用示例

六、事務註解 @Transactional

在Spring中,事務有兩種實現方式,分別是編程式事務管理和聲明式事務管理兩種方式

  • 編程式事務管理: 編程式事務管理使用TransactionTemplate或者直接使用底層的PlatformTransactionManager。對於編程式事務管理,spring推薦使用TransactionTemplate。
  • 聲明式事務管理: 建立在AOP之上的。其本質是對方法前後進行攔截,然後在目標方法開始之前創建或者加入一個事務,在執行完目標方法之後根據執行情況提交或者回滾事務,通過@Transactional就可以進行事務操作,更快捷而且簡單。推薦使用

七、全局異常處理

@ControllerAdvice 統一處理異常

@ControllerAdvice 註解定義全局異常處理類

@ExceptionHandler 註解聲明異常處理方法

 

 

 

 

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