国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|JavaScript|易語言|

服務(wù)器之家 - 編程語言 - Java教程 - spring springMVC中常用注解解析

spring springMVC中常用注解解析

2021-05-06 11:15Mr_LINWH Java教程

這篇文章主要介紹了spring springMVC中常用注解,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下

一,使用注解:

    在spring的配置文件applicationcontext.xml中,加入注解掃描。配置項(xiàng)就配置了對指定的包進(jìn)行掃描,以實(shí)現(xiàn)依賴注入。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?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>

二,常見注解:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@controller
@service
@autowired
@requestmapping
@requestparam
@modelattribute
@cacheable
@cacheflush
@resource
@postconstruct
@predestroy
@repository
@component (不推薦使用)
@scope
@sessionattributes
@initbinder
@required
@qualifier

三,常用spring注解:

@controller(運(yùn)用于表現(xiàn)層)

使用@controller注解標(biāo)識useraction之后,就表示要把useraction交給spring容器管理,在spring容器中會存在一個(gè)名字為"useraction"的action,這個(gè)名字是根據(jù)useraction類名來取的。注意:如果@controller不指定其value【@controller】,則默認(rèn)的bean名字為這個(gè)類的類名首字母小寫,如果指定value【@controller(value="useraction")】或者【@controller("useraction")】,則使用value作為bean的名字。

這里的useraction還使用了@scope注解,@scope("prototype")表示將action的范圍聲明為原型,可以利用容器的scope="prototype"來保證每一個(gè)請求有一個(gè)單獨(dú)的action來處理,避免struts中action的線程安全問題。spring 默認(rèn)scope是單例模式(scope="singleton"),這樣只會創(chuàng)建一個(gè)action對象,每次訪問都是同一action對象,數(shù)據(jù)不安全,struts2 是要求每次次訪問都對應(yīng)不同的action,scope="prototype" 可以保證當(dāng)有請求的時(shí)候都創(chuàng)建一個(gè)action對象

@controller

?
1
2
3
@scope("prototype")
public class useraction extends baseaction<user>{ 
}

@ service(運(yùn)用于業(yè)務(wù)邏輯層)

注意,@service注解是在服務(wù)接口的實(shí)現(xiàn)類下,而不是接口中使用。

這里很好的體現(xiàn)了spring中的控制反轉(zhuǎn),我們不在讓對象自己去實(shí)例化對象,去主動依賴對象,而是 專門用一個(gè)容器來創(chuàng)建對象,由ioc進(jìn)行管理。實(shí)例:

action要使用userserviceimpl時(shí),就不用主動去創(chuàng)建userserviceimpl的實(shí)例了,創(chuàng)建userserviceimpl實(shí)例已經(jīng)交給spring來做了,spring把創(chuàng)建好的userserviceimpl實(shí)例給action,action拿到就可以直接用了。action由原來的主動創(chuàng)建userserviceimpl實(shí)例后就可以馬上使用,變成了被動等待由spring創(chuàng)建好userserviceimpl實(shí)例之后再注入給action,action才能夠使用。這說明action對“userserviceimpl”類的“控制權(quán)”已經(jīng)被“反轉(zhuǎn)”了,原來主動權(quán)在自己手上,自己要使用“userserviceimpl”類的實(shí)例,自己主動去new一個(gè)出來馬上就可以使用了,但現(xiàn)在自己不能主動去new“userserviceimpl”類的實(shí)例,new“userserviceimpl”類的實(shí)例的權(quán)力已經(jīng)被spring拿走了,只有spring才能夠new“userserviceimpl”類的實(shí)例,而action只能等spring創(chuàng)建好“userserviceimpl”類的實(shí)例后,再“懇求”spring把創(chuàng)建好的“userserviceimpl”類的實(shí)例給他,這樣他才能夠使用“userserviceimpl”,這就是spring核心思想“控制反轉(zhuǎn)”,也叫“依賴注入”,“依賴注入”也很好理解,action需要使用userserviceimpl干活,那么就是對userserviceimpl產(chǎn)生了依賴,spring把a(bǔ)cion需要依賴的userserviceimpl注入(也就是“給”)給action,這就是所謂的“依賴注入”。對action而言,action依賴什么東西,就請求spring注入給他,對spring而言,action需要什么,spring就主動注入給他。

?
1
2
3
@service("userservice")
public class userserviceimpl implements userservice {
}

@ repository(運(yùn)用于數(shù)據(jù)管理層)

筆者是使用工具反向生成的實(shí)體層數(shù)據(jù)model跟mapper,所以也沒用到這個(gè)注解,不過這個(gè)就是簡單的向spring容器中注入一個(gè)bean

?
1
2
3
@repository(value="userdao")
public class userdaoimpl extends basedaoimpl<user> {
}

四,常用springmvc注解:

@autowired(按類型注入)

對類成員變量、方法及構(gòu)造函數(shù)進(jìn)行標(biāo)注,完成自動裝配的工作。簡單來說就是調(diào)用bean,告訴spring這個(gè)存在與被管理的容器中。

@autowired 根據(jù)bean 類型從spring 上線文中進(jìn)行查找,注冊類型必須唯一,否則報(bào)異常

@autowired 標(biāo)注作用于 map 類型時(shí),如果 map 的 key 為 string 類型,則 spring 會將容器中所有類型符合 map 的 value 對應(yīng)的類型的 bean 增加進(jìn)來,用 bean 的 id 或 name 作為 map 的 key。

@autowired 還有一個(gè)作用就是,如果將其標(biāo)注在 beanfactory 類型、applicationcontext 類型、resourceloader 類型、applicationeventpublisher 類型、messagesource 類型上,那么 spring 會自動注入這些實(shí)現(xiàn)類的實(shí)例,不需要額外的操作。

@autowired
private ireportservice reportservice ;
@resource(按名稱注入)

跟@autowired類似,@resource 默認(rèn)按bean的name進(jìn)行查找,如果沒有找到會按type進(jìn)行查找

@resource
private datasource datasource; // inject the bean named 'datasource'
@resource(name="datasource")
@resource(type=datasource.class)
延伸問題:什么是按類型進(jìn)行裝配,什么是按名稱進(jìn)行裝配?

所謂按類型,就是當(dāng)spring容器中存在一個(gè)與指定屬性類型相同的bean,那么將該屬性進(jìn)行自動裝配;如果存在多個(gè)該類型的bean,那么跑出異常,并指出不能使用按類型進(jìn)行自動裝配;如果沒有找到匹配的bean,則什么事都不發(fā)生。
所謂按名稱,即根據(jù)屬性名進(jìn)行自動裝配,此項(xiàng)會檢查spring容器中與該屬性名完全一致的的bean,進(jìn)行自動裝配。

@requestmapping(映射請求地址)

用來處理請求地址映射的注解,可用于類或方法上。用于類上,表示類中的所有響應(yīng)請求的方法都是以該地址作為父路徑。

其中有六個(gè)屬性,分別為:

1、 value, method;

value:     指定請求的實(shí)際地址,指定的地址可以是uri template 模式(后面將會說明);

method:  指定請求的method類型, get、post、put、delete等;

2、consumes,produces

consumes: 指定處理請求的提交內(nèi)容類型(content-type),例如application/json, text/html;

produces:    指定返回的內(nèi)容類型,僅當(dāng)request請求頭中的(accept)類型中包含該指定類型才返回;

3、params,headers

params: 指定request中必須包含某些參數(shù)值是,才讓該方法處理。

headers: 指定request中必須包含某些指定的header值,才能讓該方法處理請求。

?
1
2
3
4
5
6
7
8
9
@controller
@requestmapping("/bbtforum.do")
public class bbtforumcontroller {
  @requestmapping(params = "method=listboardtopic")
  public string listboardtopic(int topicid,user user) {}
}
@requestmapping("/softpg/downsoftpg.do")
@requestmapping(value="/softpg/ajaxloadsoftid.do", method=requestmethod.post)
@requestmapping(value="/osu/product/detail.do", params={"modify=false"}, method=requestmethod.post)

 @requestparam(獲取請求參數(shù)的值)

比如我們在瀏覽器的訪問地址是:localhost:8080/hello?id=1000,則拿到id的值,例如:

?
1
2
3
4
5
6
7
8
@restcontroller
public class hellocontroller {
 
  @requestmapping(value="/hello",method= requestmethod.get)
  public string sayhello(@requestparam("id") integer id){
    return "id:"+id;
  }
}

@pathvaribale  (獲取url中的數(shù)據(jù))

?
1
2
3
4
5
6
7
8
@restcontroller
public class hellocontroller {
 
  @requestmapping(value="/hello/{id}",method= requestmethod.get)
  public string sayhello(@pathvariable("id") integer id){
    return "id:"+id;
  }
}

@responsebody(返回類型為json)

作用: 該注解用于將controller的方法返回的對象,通過適當(dāng)?shù)膆ttpmessageconverter轉(zhuǎn)換為指定格式后,寫入到response對象的body數(shù)據(jù)區(qū)。

使用時(shí)機(jī):返回的數(shù)據(jù)不是html標(biāo)簽的頁面,而是其他某種格式的數(shù)據(jù)時(shí)(如json、xml等)使用;

總結(jié)

以上所述是小編給大家介紹的spring springmvc中常用注解解析,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對服務(wù)器之家網(wǎng)站的支持!

原文鏈接:https://www.cnblogs.com/lwh-note/p/9098797.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 免费观看在线午夜影视 | 一本色道久久综合狠狠躁篇怎么玩 | 久久久久久一区二区三区 | 国产精品美女久久久久久久久久久 | 黄色毛片免费看 | 夜夜操天天干 | 久久加勒比 | 日本网站在线免费观看 | 亚洲视频在线观看网址 | 一区二区三区久久 | 国产成人黄色 | 精品亚洲永久免费精品 | 国产在线精品一区 | 日韩av一区二区在线观看 | 午夜私人视频 | 操操网 | 国产黄网| 日本在线视频观看 | 亚洲高清在线视频 | 精品欧美乱码久久久久久1区2区 | 亚洲欧美第一页 | 国产精品久久久久久久一区探花 | 欧美精品一区在线观看 | 国产精品美女久久久久aⅴ国产馆 | 自拍视频网站 | 免费看一区二区三区 | 狠狠艹av | 九色一区 | 国产成人一区二区三区 | 日本在线观看 | 2023国产精品久久久精品双 | 99视频网| 亚洲精品久久久久久国 | 欧美亚洲在线 | 亚洲在看 | 久久品 | 亚洲 综合 清纯 丝袜 自拍 | 国产精品免费一区二区三区四区 | 午夜影院在线观看 | 久久久久久久久久久福利观看 | 国产精品视频免费看 |