回顧maven項目的spring boot相關知識點

  2021新年快樂!html

  在參加完研究生考試後,感受像是放下了一個大負擔,但並不能就此覺得什麼都結束了。反而,當我今天去看了一下以前老師帶領咱們班級作的一個maven項目,感受像是第一次看到這個,十分陌生。這對於敲代碼的人來說是十分危險的信號,因此要趁早亡羊補牢,把遺忘的東西補一補。就此,我決定回顧這個讓我感到陌生的maven項目用到的有關的spring boot的知識點。前端

 

  1.@RestController。spring

  經過對網上這篇博客的的學習(http://www.javashuo.com/article/p-mfttmmqp-dh.html),我大體瞭解到了在Spring中@RestController的做用等同於@Controller + @ResponseBody。而@Controller註解的做用是經過在一個類上添加@Controller註解,代表了這個類是一個控制器類,而且還須要在該類中添加註解@RequestMapping;而@ResponseBody表示方法的返回值直接以指定的格式寫入Http response body中,而不是解析爲跳轉路徑。因此@RestController註解的做用大體就是將被註解的類設置爲一個控制類,是用於spring boot項目中建立controller類所須要的,且通常要與@RequestMapping(後面會講到)聯用,且支持快捷的返回一個JSON對象。而後@RestController的使用方法和代碼以下:編程

1 @RestController
2 @RequestMapping("/checkgroup") //映射到帶有參數「checkgroup」的頁面
3 public class CheckGroupController { //代表這個類是一個控制類
4   XXXXX5 }

  

  2.@RequestMappingmvc

  經過對網上這篇博客的學習(https://blog.csdn.net/qq_41425382/article/details/100123183)我學習到@RequestMapping是一個用來處理請求地址映射的註解,可用於類或方法上。用於類上,表示類中的全部響應請求的方法都是以該地址做爲父路徑,簡單來講,就是在頁面上標有此映射的功能和參數都會直接傳到被映射的函數裏面執行。且它的屬性和對應的做用如如下所示:app

  • value:用於指定請求的 URL。它和 path 屬性的做用是同樣的。
  • method:用於指定請求的方式。
  • params:用於指定限制請求參數的條件。它支持簡單的表達式。要求請求參數的 key 和 value 必須和 配置的如出一轍。

  且若是是用於方法上,則是請求 URL 的第二級訪問目錄,在使用的時候須要以/開頭。 它出現的目的是爲了使咱們的 URL 能夠按照模塊化管理。maven

  舉個例子(用他人的),將@RequestMapping註解分別註釋在類和方法上,因此在前端寫連接的時候要寫徹底的路徑(類上標籤的路徑+方法標籤上的路勁)分佈式

  控制器的代碼塊:模塊化

1 @RequestMapping("/account")
2 public class AccountController {
3     @RequestMapping("/findAccount")
4     public String findAccount() {
5         System.out.println("查詢了帳戶。。。。");
6         return "success";
7     }
8 }

  JSP中的代碼塊函數

 1 <html>
 2 <head>
 3     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 4     <title>requestmapping 的使用</title>
 5 </head>
 6 <body>
 7     <!-- 第一種訪問方式 -->
 8     <a href="${pageContext.request.contextPath}/account/findAccount">
 9         查詢帳戶
10     </a>
11 <br/>
12     <!-- 第二種訪問方式 -->
13     <a href="account/findAccount">查詢帳戶</a>
14 </body>
15 </html>

  

  3.@Reference

  @Reference是dubbo的註解,也是注入,他通常注入的是分佈式的遠程服務的對象,須要dubbo配置使用。除此以外的注入註解還有@Autowired(SpringBoot項目中經常使用。簡單來講就是引入由Spring容器管理的bean)和@resource(做用至關於@Autowired,只不過@Autowired是byType自動注入,而@Resource默認byName自動注入),而spring中的依賴注入是spring的的兩大核心之一,也叫控制反轉,他的做用是將建立對象的管理交給spring容器,之前寫項目會用new people的方式來建立一個people類,如今用了spring後,能夠在xml中配置,也能夠用註解的方式,在class文件開始部分寫下面的代碼,而後在這個class文件中使用到people就能夠直接用people,而不須要用new來建立了,這樣也大大下降了耦合性。

  而後這篇博客仔細講解了有依賴注入和無依賴注入的差異,具體就再也不細述:https://blog.csdn.net/chongbin007/article/details/103064932

  而後列舉一些如何使用@Reference

1 @Reference

2 private CheckGroupService checkGroupService; 

  

  4.@PreAuthorize

  @PreAuthorize是Spring Security權限訪問的一個註解,須要在設置好Spring Security的相關配置後,此註解才起做用。具體使用方法我暫時尚未搞懂,故先暫時擱置。

  

  5.@Component

  這個註解是我第一次看見,且網上的知識不少是類似的,故轉載一篇博客以供參考:http://www.javashuo.com/article/p-hcppuuat-eu.html

    一、@controller 控制器(注入服務)
    用於標註控制層,至關於struts中的action層

    二、@service 服務(注入dao)
    用於標註服務層,主要用來進行業務的邏輯處理

    三、@repository(實現dao訪問)
    用於標註數據訪問層,也能夠說用於標註數據訪問組件,即DAO組件.

    四、@component (把普通pojo實例化到spring容器中,至關於配置文件中的 <bean id="" class=""/>)
    泛指各類組件,就是說當咱們的類不屬於各類歸類的時候(不屬於@Controller、@Services等的時候),咱們就可使用@Component來標註這個類。

  說明: 

  下面寫這個是引入component的掃描組件 (這是在配置文件中的書寫格式,如spring mvc中的applicationcontent.xml,在spring boot中的話,因採用的是零配置因此要直接在類上加入@component註解就能夠了)

<context:component-scan base-package=」com.mmnc」> 

  上面的這個例子是引入Component組件的例子,其中base-package表示爲須要掃描的全部子包。 
  共同點:被@controller 、@service、@repository 、@component 註解的類,都會把這些類歸入進spring容器中進行管理

 

  6.@Service

  @Service如上所示是用於標註服務層,主要用來進行業務的邏輯處理,這裏介紹一個用法,就是當你在寫某個函數的serviceImpl類時,能夠在頂部添加代碼

1.@Service(interfaceClass = XXXService.class)

來映射對應的XXXservice,具體原理我還不知道,只是簡單列出來。

 

  7.@Transactional

  • @Transactional是聲明式事務管理 編程中使用的註解,添加位置應該是接口實現類或接口實現方法上,而不是接口類中。
  • 訪問權限:public 的方法才起做用。@Transactional 註解應該只被應用到 public 方法上,這是由 Spring AOP 的本質決定的。
  • 系統設計:將標籤放置在須要進行事務管理的方法上,而不是放在全部接口實現類上:只讀的接口就不須要事務管理,因爲配置了@Transactional就須要AOP攔截及事務的處理,可能影響系統性能。
相關文章
相關標籤/搜索