spring mvc 注解 -電腦資料

電腦資料 時(shí)間:2019-01-01 我要投稿
【m.clearvueentertainment.com - 電腦資料】

    從Spring 2.5 開始提供了完全基于注釋配置 Bean、裝配 Bean 的功能,

spring mvc 注解

。我們可以使用基于注釋的 Spring IoC 替換原來基于 XML 的配置。以前做項(xiàng)目使用的是xml配置來實(shí)現(xiàn)的,這幾天在做一個(gè)小項(xiàng)目,使用了springmvc的注解,跟大家分享一下。

使用注解

    Spring 2.5 提供了 AutowiredAnnotationBeanPostProcessor、

    CommonAnnotationBeanPostProcessor、 PersistenceAnnotationBeanPostProcessor 和 RequiredAnnotationBeanPostProcessor 這四個(gè)主要的關(guān)于 Annotation 的 BeanPostProcessor。

    我們可以使用來方便地、一次性的聲明者四個(gè) BeanPostProcessor。

    1.Autowired... 提供對(duì) Spring 特有的 Autowired 和 Qualifier 注釋。

    2.CommonAnotation... 用于支持 JSR 250 的注釋

    3.Persistence... 用于 JPA 的 PersistenceUnit 和PersistenceContext 注釋

    4.Required... 用于檢查被 Required 注釋標(biāo)記的屬性是否被設(shè)定。

    原來我們配置xml

    在使用注釋配置之前,先來回顧一下傳統(tǒng)上是如何配置 Bean 并完成 Bean 之間依賴關(guān)系的建立。下面是 3 個(gè)類,它們分別是 Office、Car 和 Boss,這 3 個(gè)類需要在 Spring 容器中配置為 Bean:

package com.baobaotao; public class Office {     private String fficeNo =”001”;     //省略 get/setter     @Override     public String toString() {         return officeNo: + officeNo;     } }
public class Car {     private String brand;     private double price;     // 省略 get/setter     @Override     public String toString() {         return brand: + brand + , + price: + price;
} }
package com.baobaotao; public class Boss {     private Car car;     private Office office;     // 省略 get/setter     @Override     public String toString() {         return car: + car +  + office: + office;
} }

    我們?cè)赟pring容器中將Office和Car聲明為Bean,并注入到Boss Bean中:下面是使用傳統(tǒng) XML 完成這個(gè)工作的配置文件beans.xml.

使用@autowired

    Spring 2.5 引入了 @Autowired 注釋,它可以對(duì)類成員變量、方法及構(gòu)造函數(shù)進(jìn)行標(biāo)注,完成自動(dòng)裝配的工作。來看一下使用 @Autowired 進(jìn)行成員變量自動(dòng)注入的代碼。

import org.springframework.beans.factory.annotation.Autowired;
public class Boss {
@Autowired
private Car car;
@Autowired
private Office office;
}

    Spring 通過一個(gè) BeanPostProcessor 對(duì) @Autowired 進(jìn)行解析,所以要讓 @Autowired 起作用必須事先在 Spring 容器中聲明AutowiredAnnotationBeanPostProcessor Bean,

電腦資料

spring mvc 注解》(http://m.clearvueentertainment.com)。

    讓@Autowired工作起來

<b><b>
<b></bean>
<b></bean>
<property name="officeNo" value="001/"></property>
<b></bean>
<property ca72="" name="brand" value="紅旗"></property>
<property name="price" value="2000/"></property>

    這樣,當(dāng) Spring 容器啟動(dòng)時(shí),AutowiredAnnotationBeanPostProcessor 將掃描 Spring 容器中所有 Bean,當(dāng)發(fā)現(xiàn) Bean 中擁有 @Autowired 注釋時(shí)就找到和其匹配(默認(rèn)按類型匹配)的 Bean,并注入到對(duì)應(yīng)的地方中去。

    按照上面的配置,Spring 將直接采用 Java 反射機(jī)制對(duì) Boss 中的 car 和 office 這兩個(gè)私有成員變量進(jìn)行自動(dòng)注入。

注釋配置相對(duì)于 XML 配置的對(duì)比

    ??1、它可以充分利用 Java 的反射機(jī)制獲取類結(jié)構(gòu)信息,這些信息可以有效減少配置的工作。如使用 JPA 注釋配置 ORM 映射時(shí),我們就不需要指定 PO 的屬性名、類型等信息,如果關(guān)系表字段和 PO 屬性名、類型都一致,您甚至無需編寫任務(wù)屬性映射信息——因?yàn)檫@些信息都可以通過 Java 反射機(jī)制獲取。

    ??2、注釋和 Java 代碼位于一個(gè)文件中,而 XML 配置采用獨(dú)立的配置文件,大多數(shù)配置信息在程序開發(fā)完成后都不會(huì)調(diào)整,如果配置信息和 Java 代碼放在一起,有助于增強(qiáng)程序的內(nèi)聚性。而采用獨(dú)立的 XML 配置文件,程序員在編寫一個(gè)功能時(shí),往往需要在程序文件和配置文件中不停切換,這種思維上的不連貫會(huì)降低開發(fā)效率。

    因此在很多情況下,注釋配置比 XML 配置更受歡迎,注釋配置有進(jìn)一步流行的趨勢(shì)。Spring 2.5 的一大增強(qiáng)就是引入了很多注釋類,現(xiàn)在您已經(jīng)可以使用注釋配置完成大部分 XML 配置的功能。在這篇文章里,我們將向您講述使用注釋進(jìn)行 Bean 定義和依賴注入的內(nèi)容。

具體問題具體分析

    總結(jié):以上的對(duì)比是理論上的對(duì)比,做項(xiàng)目實(shí)踐后認(rèn)識(shí)到,每個(gè)項(xiàng)目到底xml配置還是使用注解來配置,跟項(xiàng)目的大小,需求有莫大的關(guān)系,不是“一句注解比XML簡(jiǎn)單”就要使用的,還是需要具體問題具體分析的。

    ??

最新文章