最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

spring springMVC中常用注解解析

 更新時(shí)間:2018年05月28日 10:31:33   作者:Mr_LINWH  
這篇文章主要介紹了spring springMVC中常用注解,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下

一,使用注解:

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

<?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>

二,常見注解:

@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)識(shí)UserAction之后,就表示要把UserAction交給Spring容器管理,在Spring容器中會(huì)存在一個(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è)請(qǐng)求有一個(gè)單獨(dú)的Action來處理,避免struts中Action的線程安全問題。spring 默認(rèn)scope是單例模式(scope="singleton"),這樣只會(huì)創(chuàng)建一個(gè)Action對(duì)象,每次訪問都是同一Action對(duì)象,數(shù)據(jù)不安全,struts2 是要求每次次訪問都對(duì)應(yīng)不同的Action,scope="prototype" 可以保證當(dāng)有請(qǐng)求的時(shí)候都創(chuàng)建一個(gè)Action對(duì)象

@Controller

@Scope("prototype")
public class UserAction extends BaseAction<User>{  
}

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

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

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

Action要使用UserServiceImpl時(shí),就不用主動(dòng)去創(chuàng)建UserServiceImpl的實(shí)例了,創(chuàng)建UserServiceImpl實(shí)例已經(jīng)交給Spring來做了,Spring把創(chuàng)建好的UserServiceImpl實(shí)例給Action,Action拿到就可以直接用了。Action由原來的主動(dòng)創(chuàng)建UserServiceImpl實(shí)例后就可以馬上使用,變成了被動(dòng)等待由Spring創(chuàng)建好UserServiceImpl實(shí)例之后再注入給Action,Action才能夠使用。這說明Action對(duì)“UserServiceImpl”類的“控制權(quán)”已經(jīng)被“反轉(zhuǎn)”了,原來主動(dòng)權(quán)在自己手上,自己要使用“UserServiceImpl”類的實(shí)例,自己主動(dòng)去new一個(gè)出來馬上就可以使用了,但現(xiàn)在自己不能主動(dòng)去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干活,那么就是對(duì)UserServiceImpl產(chǎn)生了依賴,Spring把Acion需要依賴的UserServiceImpl注入(也就是“給”)給Action,這就是所謂的“依賴注入”。對(duì)Action而言,Action依賴什么東西,就請(qǐng)求Spring注入給他,對(duì)Spring而言,Action需要什么,Spring就主動(dòng)注入給他。

@Service("userService")
public class UserServiceImpl implements UserService {
}

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

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

@Repository(value="userDao")
public class UserDaoImpl extends BaseDaoImpl<User> {
}

四,常用springMVC注解:

@Autowired(按類型注入)

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

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

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

@Autowired 還有一個(gè)作用就是,如果將其標(biāo)注在 BeanFactory 類型、ApplicationContext 類型、ResourceLoader 類型、ApplicationEventPublisher 類型、MessageSource 類型上,那么 Spring 會(huì)自動(dòng)注入這些實(shí)現(xiàn)類的實(shí)例,不需要額外的操作。

@Autowired
private IReportService reportService ;
@Resource(按名稱注入)

跟@Autowired類似,@Resource 默認(rèn)按bean的name進(jìn)行查找,如果沒有找到會(huì)按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)行自動(dòng)裝配;如果存在多個(gè)該類型的bean,那么跑出異常,并指出不能使用按類型進(jìn)行自動(dòng)裝配;如果沒有找到匹配的bean,則什么事都不發(fā)生。
所謂按名稱,即根據(jù)屬性名進(jìn)行自動(dòng)裝配,此項(xiàng)會(huì)檢查Spring容器中與該屬性名完全一致的的bean,進(jìn)行自動(dòng)裝配。

@RequestMapping(映射請(qǐng)求地址)

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

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

1、 value, method;

value:     指定請(qǐng)求的實(shí)際地址,指定的地址可以是URI Template 模式(后面將會(huì)說明);

method:  指定請(qǐng)求的method類型, GET、POST、PUT、DELETE等;

2、consumes,produces

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

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

3、params,headers

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

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

@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(獲取請(qǐng)求參數(shù)的值)

比如我們?cè)跒g覽器的訪問地址是:localhost:8080/hello?id=1000,則拿到id的值,例如:

@RestController
public class HelloController {
 
  @RequestMapping(value="/hello",method= RequestMethod.GET)
  public String sayHello(@RequestParam("id") Integer id){
    return "id:"+id;
  }
}

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

@RestController
public class HelloController {
 
  @RequestMapping(value="/hello/{id}",method= RequestMethod.GET)
  public String sayHello(@PathVariable("id") Integer id){
    return "id:"+id;
  }
}

@ResponseBody(返回類型為json)

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

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

總結(jié)

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

相關(guān)文章

  • IntelliJ IDEA 詳細(xì)圖解最常用的配置(適合剛剛用的新人)

    IntelliJ IDEA 詳細(xì)圖解最常用的配置(適合剛剛用的新人)

    這篇文章主要介紹了IntelliJ IDEA 詳細(xì)圖解最常用的配置,本篇教程非常適合剛剛用的新人,本文圖文并茂給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Java servlet、filter、listener、interceptor之間的區(qū)別和聯(lián)系

    Java servlet、filter、listener、interceptor之間的區(qū)別和聯(lián)系

    這篇文章主要介紹了Java servlet、filter、listener、interceptor之間的區(qū)別和聯(lián)系的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • spring cloud 使用Eureka 進(jìn)行服務(wù)治理方法

    spring cloud 使用Eureka 進(jìn)行服務(wù)治理方法

    這篇文章主要介紹了spring cloud 使用Eureka 進(jìn)行服務(wù)治理方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-05-05
  • Feign Client超時(shí)時(shí)間設(shè)置不生效的解決方法

    Feign Client超時(shí)時(shí)間設(shè)置不生效的解決方法

    這篇文章主要為大家詳細(xì)介紹了Feign Client 超時(shí)時(shí)間設(shè)置不生效的原因與解決方法,具有一定的的參考價(jià)值,希望對(duì)大家有一定的幫助
    2025-04-04
  • SpringBoot打印系統(tǒng)執(zhí)行的sql語句及日志配置指南

    SpringBoot打印系統(tǒng)執(zhí)行的sql語句及日志配置指南

    這篇文章主要給大家介紹了關(guān)于SpringBoot打印系統(tǒng)執(zhí)行的sql語句及日志配置的相關(guān)資料,在Java SpringBoot項(xiàng)目中如果使用了Mybatis框架,默認(rèn)情況下執(zhí)行的所有SQL操作都不會(huì)打印日志,需要的朋友可以參考下
    2023-10-10
  • spring boot注解方式使用redis緩存操作示例

    spring boot注解方式使用redis緩存操作示例

    這篇文章主要介紹了spring boot注解方式使用redis緩存操作,結(jié)合實(shí)例形式分析了spring boot注解方式使用redis緩存相關(guān)的依賴庫引入、注解使用及redis緩存相關(guān)操作技巧,需要的朋友可以參考下
    2019-11-11
  • SpringBoot的@Scheduled和@Schedules區(qū)別小結(jié)

    SpringBoot的@Scheduled和@Schedules區(qū)別小結(jié)

    本文主要介紹了SpringBoot的@Scheduled和@Schedules區(qū)別小結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • 通俗易懂學(xué)習(xí)java并發(fā)工具類-Semaphore,Exchanger

    通俗易懂學(xué)習(xí)java并發(fā)工具類-Semaphore,Exchanger

    這篇文章主要介紹了java并發(fā)工具類-Semaphore,Exchanger,java并發(fā)工具類有很多,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,下面小編帶大家來一起學(xué)習(xí)一下吧
    2019-06-06
  • Solr通過特殊字符分詞實(shí)現(xiàn)自定義分詞器詳解

    Solr通過特殊字符分詞實(shí)現(xiàn)自定義分詞器詳解

    最近因?yàn)楣ぷ鞯男枰?,要做一個(gè)分詞器,通過查找相關(guān)的資料最終用solr實(shí)現(xiàn)了,下面這篇文章主要給大家介紹了關(guān)于Solr通過特殊字符分詞實(shí)現(xiàn)自定義分詞器的相關(guān)資料,需要的朋友可以參考借鑒,下面隨著小編來一起看看吧。
    2017-09-09
  • Java FileWriter輸出換行操作

    Java FileWriter輸出換行操作

    這篇文章主要介紹了Java FileWriter輸出換行操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07

最新評(píng)論

阳城县| 呼伦贝尔市| 普宁市| 油尖旺区| 错那县| 和硕县| 南康市| 宜阳县| 冕宁县| 浪卡子县| 哈巴河县| 抚顺县| 清水县| 赤城县| 崇阳县| 吉首市| 聊城市| 宣威市| 平山县| 商洛市| 宁陕县| 合山市| 车险| 佛坪县| 灌阳县| 张北县| 瑞丽市| 封丘县| 福贡县| 修水县| 宿迁市| 铁岭县| 乌兰浩特市| 防城港市| 夏河县| 宣武区| 天台县| 楚雄市| 西青区| 大埔区| 沽源县|