springJSR 250註解學習

2021-07-23 19:59:07 字數 2628 閱讀 7358

spring與jsr-250註解學習

1.參考書1 ---------------《精通 spring 2.x—企業應用開發精解》

前言:要使用註解,spring 的配置檔案得到了極大的簡化,只需要加入下面兩個命名空間即可

base-package

="testspring.main"

/>

那是不是我們有了註解了以後就可以完全不使用xml配置檔案了呢,答案是否定的,因為有如下原因:

1.如果 bean 不是自己編寫的類(如 jdbctemplate、sessionfactorybean 等),注釋配置將無法實施,此時 xml 配置是唯一可用的方式。

2.在第三方類 bean 的配置,以及那些諸如資料來源、快取池、持久層操作模板類、事務管理等內容的配置上,xml 配置依然擁有不可替代的地位。

所以我們應該是合理的使用註解,增加程式的內聚性,同時結合使用xml配置檔案,達到快速開發的效果。

spring註解學習

1.@restcontroller}相當於@controller和@requestbody 連個一起使用,使用@restcontroller不需要返回具體的前端頁面,可以返回字串。

由於大量專案都會在主要的配置類上新增@configuration,@enableautoconfiguration,@componentscan三個註解。

因此spring boot提供了

註解,該註解可以替代上面三個註解(使用spring註解繼承實現)。

3.@resource是jsr-250 規範定義的註解。 @resource 的作用相當於 @autowired,只不過 @autowired 按 bytype 自動注入,面 @resource 預設按 byname 自動注入罷了。@resource 有兩個屬性是比較重要的,分別是 name 和 type。

要讓 jsr-250 的注釋生效,除了在 bean 類中標註這些注釋外,還需要在 spring 容器中註冊乙個負責處理這些注釋的 beanpostprocessor:       

commonannotationbeanpostprocessor 實現了 beanpostprocessor 介面,它負責掃瞄使用了 jsr-250 注釋的 bean,並對它們進行相應的操作。

@postconstruct 和 @predestroy 也是jsr-250 規範定義的註解。他們分別表示bean的生命週期的開始和銷毀,可以定義相應的操作,他們一般都是註解在方法之上的。關於更多的細節可以看   *****參考書1。

4.@component註解

@component 有乙個可選的入參,用於指定 bean 的名稱。形如:@component("car"),表示定義的bean的name=car.一般情況下,bean 都是 singleton 的,需要注入 bean 的地方僅需要通過 bytype 策略就可以自動注入了,所以大可不必指定 bean 的名稱。

預設情況下通過 @component 定義的 bean 都是 singleton 的,如果需要使用其它作用範圍的 bean,可以通過 @scope 注釋來達到目標。@scope("prototype")。

spring容器最初提供了兩種bean的scope型別:singleton和prototype,但發布2.0以後,又引入了另外三種scope型別:request、session和global session,這三種只能在web 應用中才可以使用。

singleton: spring 容器只會建立該bean定義的唯一例項,這個例項會被儲存到快取中,並且對該bean的所有後續請求和引用都將返回該快取中的物件例項,一般情況下,無狀態的bean使用該scope。

prototype:每次對該bean的請求都會建立乙個新的例項,一般情況下,有狀態的bean使用該scope。

request:每次http請求將會有各自的bean例項,類似於prototype。

session:在乙個http session中,乙個bean定義對應乙個bean例項。

global session:在乙個全域性的http session中,乙個bean定義對應乙個bean例項。典型情況下,僅在使用portlet context的時候有效。

5.spring 2.5 中除了提供 @component 注釋外,還定義了幾個擁有特殊語義的注釋,它們分別是:@repository、@service 和 @controller。在目前的 spring 版本中,這 3 個注釋和 @component 是等效的,但是從注釋類的命名上,很容易看出這 3 個注釋分別和持久層、業務層和控制層(web 層)相對應。雖然目前這 3 個注釋和 @component 相比沒有什麼新意,但 spring 將在以後的版本中為它們新增特殊的功能。所以,如果 web 應用程式採用了經典的三層分層結構的話,最好在持久層、業務層和控制層分別採用 @repository、@service 和 @controller 對分層中的類進行注釋,而用 @component 對那些比較中立的類進行注釋。

jsr-250 

規範定義的注釋

jsr註解學習待續

PTA 結繩 25分 25分???

給定一段一段的繩子,你需要把它們串成一條繩。每次串連的時候,是把兩段繩子對折,再如下圖所示套接在一起。這樣得到的繩子又被當成是另一段繩子,可以再次對折去跟另一段繩子串連。每次串連後,原來兩段繩子的長度就會減半。給定 n 段繩子的長度,你需要找出它們能串成的繩子的最大長度。每個輸入包含 1 個測試用例...

25歲,何去何從?

我,87年生,乙個女程式設計師。至今也工作也已有3年多,按理說,3年不多不長,工作應該是挺穩定了。但是軟體行業你也知道,分分鐘都有公司興起,分分鐘都有公司倒閉。最近移動行業變數很大,昔日的巨頭風光不在,如今正在風頭的幾家你死我活的互相較著勁。年歲漸長,也是一直在焦慮著以後該往哪個方向走,從工作到現在...

完美數列 25

時間限制 300 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 cao,peng 給定乙個正整數數列,和正整數p,設這個數列中的最大值是m,最小值是m,如果m m p,則稱這個數列是完美數列。現在給定引數p和一些正整數,請你從中選擇盡可能多的數構成乙個...