Annotation(三) Spring註解開發

2022-04-10 11:22:48 字數 2731 閱讀 7469

spring框架的核心功能ioc(inversion of control),也就是通過spring容器進行物件的管理,以及物件之間組合關係的對映。通常情況下我們會在xml配置檔案中進行action,service,dao等層的宣告,然後並告知框架我們想要的注入方式,然後在類中宣告要組合類的get,set方法。而通過spring框架中註解的運用也就主要是解決這類問題的。而框架中另乙個核心知識aop,一種面向橫切面的方法程式設計,在程式中一般都是進行一次設定就可以的,所以都還放在配置檔案中。例如宣告式事物的設定,一次設定,後邊我就不用管了,所以這個沒有必要使用註解進行簡化。因為工作量都差不多。好了,看一下在spring中如何使用註解進行開發吧!

一,首先需要在配置檔案中增加命名空間的和約束檔案:

<

beans

... xmlns:context

=""xsi:schemalocation

=" /spring-context-2.5.xsd"

/>

二,開啟spring的註解功能,這樣spring環境才會進行指定位置的掃瞄,進行類之間的關聯組合:

<

context:component-scan

base-package

="com.ljh.spring.*"

/>

三,宣告註解類,讓spring框架可以識別:

1,類的分層註解,由於我們後台開發都是分為三層進行開發的,所以spring框架提供了三種對於不同層的註解方式:

控制層:@controller

服務層:@service

持久層:@repository

類似於我們配置檔案中的:

<

bean

id="orgservice"

class

="com.ljh.web.service.orgservice"

>

bean

>

預設情況下使用註解宣告的bean物件id名稱為:

類名稱的首字母小寫,一般不需要我們進行設定,如果想要設定時,例如我們指定的是實現類,而名字指向了介面,直接新增value屬性即可:@service(value="name"),當然value是可以省略的。

spring

框架還為我們提供了代替上邊三個分層註解的通用註解:@component.當然提倡大家使用分層註解更好一些,區分層次比較明確。

2,自動裝配功能的實現物件之間的組合關係,在屬性前邊指定下邊的註解:

@autowired : 採用型別的方式完成自動裝配 : bytype

@resource : 採用名稱+型別的方式完成自動裝配 : byname +bytype,此種方法推薦使用。

另外spring提供的兩種註解的自動裝配功能,屬性不需要宣告set,get方法也可以完成組合功能,這是非常方便的。

3,在宣告action時,需要指定其為多例的,解決執行緒安全的問題,在配置檔案中我們通常會這樣宣告action的類:

<

bean

id="orgaction"

class

="com.ljh.web.action.orgaction"

scope

="prototype"

>

bean

>

而在spring註解開發中也提供了類似的屬性來解決此問題,在action類前邊設定如下:

@scope("prototype")

4,利用配置檔案宣告dao層類時,通常是這樣的

<

bean

name

="orgtypedao"

class

="com.ljh.dao.impl.orgtypedaoimpl"

>

bean

>

而,註解開發的方法如何進行sessionfactory的注入呢?由於dao層繼承了父類hibernatedaosupport,而在父類中有這樣乙個方法:

//

父類中的sessionfactory的set注入方法

public

final

void

setsessionfactory(sessionfactory sessionfactory)

}

這是sessionfactory的set注入方法,所以如果我們能夠重寫此方法,在此方法上進行@resource註解,即可解決我們的問題,但是可以看到此方法是用final進行修飾的,所以通常情況下,我們採用下邊的這種方法進行解決:

@repository("orgdao")  

public

class orgdaoimpl extends hibernatedaosupport implements

orgdao

}

這樣,dao層的sessionfactory就進行了注入,我們可以正常編寫我們的dao層**了。當然了對於dao層如果我們使用了ibatis,同樣可以使用這種方法進行ibatis核心物件sqlmapclient的注入。

綜上,為spring框架的註解開發常用註解,總體感覺還是比較簡單,最起碼相對其它兩個框架而言,主要是通過註解完成物件的管理,和物件之間的組合,即spring的ioc功能。註解的開發還是能大大提高我們的開發效率的,但是還是那句話,它在一定程度上違背了ocp原則,所以大力推薦使用註解的開發的前提還是我們的需求比較固定,變動較小。

Annotation(三) Spring註解開發

spring 框架的核心功能 ioc inversion of control 也就是通過 spring 容器進行物件的管理,以及物件之間組合關係的對映。通常情況下我們會在 xml配置檔案中進行 action service,dao 等層的宣告,然後並告知框架我們想要的注入方式,然後在類中宣告要組合...

Spring基礎之三 annotation配置注入

用annotation配置只在源 相應的地方加入annotation即可,xml就不用再來回來去改了,開發時候快,不過我覺得沒xml清楚。其中這兩句是新加且必須的,新加了乙個命名空間 xml的namespacexmlns context 其實annotation全寫對了的話,配置檔案就是最上邊那樣了...

SSH三大框架之 annotation之我見

關於annotation annotation說白了就是代替之前用的map對映檔案,反映射關係放到了model類裡面。這裡說明五種情況 以student的model類為例 第一種是id號 例如 student的id號 第二種是普通的字段 例如 student的姓名name 第三種是牽扯到兩個表的ma...