国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JSP > 正文

為你介紹Spring中的常用注解

2024-09-05 00:18:19
字體:
供稿:網(wǎng)友

        Spring的核心功能就是將Bean初始化加載到容器中,很多人會好奇Bean是如何加載到容器的呢?其實就可以使用Spring注解方式,接下來錯新小編為你介紹Spring中的常用注解。

spring中使用注解時配置文件的寫法:

<?xml version="1.0" encoding="UTF-8"?> <span style="font-size:18px;"><beans xmlns="http://www.springframework.org/schema/beans"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:context="http://www.springframework.org/schema/context"  xmlns:aop="http://www.springframework.org/schema/aop"  xsi:schemaLocation="  http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd  http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd  http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd">   <aop:aspectj-autoproxy/>  <context:annotation-config/>  <context:component-scan base-package="com.test" /> </beans> 

<context:component-scan />配置項就配置了對指定的包進行掃描,以實現(xiàn)依賴注入。

        下面介紹下一些常見注解的使用:

@Autowired private IReportService reportService ; 

Spring2.5引入了@Autowired注解,它可以對類成員變量、方法及構(gòu)造函數(shù)進行標注,完成自動裝配的工作。另外,通過@Autowired可以消除get,set方法。@Autowired是根據(jù)類型進行自動轉(zhuǎn)配的。

        這里要注意@Resource也可以實現(xiàn)自動裝配,但是@Resource默認是按照名稱進行自動裝配。

        這里簡單介紹下什么是按類型進行裝配,什么是按名稱進行裝配?

        所謂按類型,就是當Spring容器中存在一個與指定屬性類型相同的bean,那么將該屬性進行自動裝配;如果存在多個該類型的bean,那么跑出異常,并指出不能使用按類型進行自動裝配;如果沒有找到匹配的bean,則什么事都不發(fā)生。

        所謂按名稱,即根據(jù)屬性名進行自動裝配,此項會檢查Spring容器中與該屬性名完全一致的的bean,進行自動裝配。

@Component("reportAction") @Scope("request") public class ReportAction extends AbstractBaseAction 

@Component注解(下面的解釋來自官方文檔)

@Component、@Service和@Controller。@Component是所有受Spring管理組件的通用形式;
 而@Repository、@Service和@Controller則是@Component的細化, 用來表示更具體的用例(例如,分別對應(yīng)了持久化層、服務(wù)層和表現(xiàn)層)。也就是說, 你能用@Component來注解你的組件類,

         但如果用@Repository、@Service 或@Controller來注解它們,你的類也許能更好地被工具處理,或與切面進行關(guān)聯(lián)。

        例如,這些典型化注解可以成為理想的切入點目標。當然,在Spring Framework以后的版本中,@Repository、@Service和@Controller也許還能攜帶更多語義。如此一來,如果你正在考慮服務(wù)層中是該用@Component還是@Service,
         那@Service顯然是更好的選擇。同樣的,就像前面說的那樣,@Repository已經(jīng)能在持久化層中進行異常轉(zhuǎn)換時被作為標記使用了。

          @Scope()指定的是bean的作用域

@Scope("prototype")注解

        Spring容器在進行輸出prototype類型的對象時,會每次重新生成一個新的對象給請求方,雖然這種類型的對象的實例化以及屬性設(shè)置都是由Spring容器來完成的,但是只要準備完畢,并且對象實例返回給請求方的之后,容器就不會再持有當前對象的引用,請求方需要自己來當前對象后繼生命周期的管理,包括該對象的銷毀。最典型的案例就是Spring容器和Struts2進行整合時,要將action的scope的改成prototype。

        @Scope("singleton")注解

        此取值表示容器中只存在一個實例,所有引用該bean都是單一實例。這個就是典型的單例模型。

        @Scope("request")注解

<bean id="requestPrecessor" class=".....RequestPrecessor" scope ="request" />

        Spring容器,即XmlWebApplicationContext回為每一個全新的RequestPrecessor,當請求結(jié)束后,該對象的生命周期即結(jié)束。當有100個Http請求同時發(fā)出時,容器會分別對每個請求創(chuàng)建不同的RequestPrecessor實例,它們之間不相互干擾,簡單來講,request可以看做是prototype的特例,request的應(yīng)用場景更具體點,其他基本沒啥區(qū)別。

@Scope("session")注解

        對于Web應(yīng)用來說,放在session中最多的就是用戶的登錄信息,對于放在session中的信息,可以將其scope的類型改為session,Spring容器會為每個獨立的session創(chuàng)建屬于自己的全新的UserPreference實例,比request類型的bean存活更長的時間,,其他方面基本沒啥區(qū)別,類似于javaweb中的session。

        最后,說一下為什么@Respository只能標注在Dao層,這是因為Spring提供的這個注解不僅將類識別為Bean,同時它能將所

        以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助~如果有疑問大家可以留言交流,謝謝大家對錯新技術(shù)頻道的支持!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 洪泽县| 永清县| 莱阳市| 休宁县| 贵南县| 米易县| 信阳市| 大连市| 布尔津县| 丰镇市| 汉沽区| 新津县| 揭东县| 化德县| 南昌市| 元朗区| 灌云县| 泸水县| 玛曲县| 鹰潭市| 封开县| 利津县| 兰西县| 缙云县| 永昌县| 阳新县| 青铜峡市| 寿光市| 吴川市| 延边| 吴江市| 淅川县| 三穗县| 阜平县| 安义县| 玛沁县| 绥中县| 库车县| 揭西县| 琼海市| 巴彦县|