回顧maven專案的spring boot相關知識點

可以混且很有必要發表於2021-01-02

  2021新年快樂!

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

 

  1.@RestController。

  通過對網上這篇部落格的的學習(https://www.cnblogs.com/yaqee/p/11256047.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.@RequestMapping

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

  • value:用於指定請求的 URL。它和 path 屬性的作用是一樣的。
  • method:用於指定請求的方式。
  • params:用於指定限制請求引數的條件。它支援簡單的表示式。要求請求引數的 key 和 value 必須和 配置的一模一樣。

  且如果是用於方法上,則是請求 URL 的第二級訪問目錄,在使用的時候需要以/開頭。 它出現的目的是為了使我們的 URL 可以按照模組化管理。

  舉個例子(用他人的),將@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

  這個註解是我第一次看見,且網上的知識很多是相似的,故轉載一篇部落格以供參考:https://www.cnblogs.com/w-essay/p/11493023.html

    1、@controller 控制器(注入服務)
    用於標註控制層,相當於struts中的action層

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

    3、@repository(實現dao訪問)
    用於標註資料訪問層,也可以說用於標註資料訪問元件,即DAO元件.

    4、@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攔截及事務的處理,可能影響系統效能。

 

 


相關文章