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

Spring P標(biāo)簽的使用詳解

 更新時(shí)間:2021年08月16日 17:08:20   作者:Hoking  
這篇文章主要介紹了Spring P標(biāo)簽的使用詳解,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Spring P標(biāo)簽的使用

Spring的p標(biāo)簽是基于XML Schema的配置方式,目的是為了簡化配置方式。由于Spring的p標(biāo)簽是spring內(nèi)置的,只要在xml頭部申明下就可以調(diào)用。如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xmlns:p="http://www.springframework.org/schema/p"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>

從 2.0開始,Spring支持使用名稱空間的可擴(kuò)展配置格式。這些名稱空間都是基于一種XML Schema定義。事實(shí)上,我們所看到的所有bean的配置格式都是基于一個(gè) XML Schema文檔。

特定的名稱空間并不需要定義在一個(gè)XSD文件中,它只在Spring內(nèi)核中存在。我們所說的p名稱空間就是這樣,它不需要一個(gè)schema定義,與我們前面采用<property/>元素定義bean的屬性不同的是,當(dāng)我們采用了p名稱空間,我們就可以在bean元素中使用屬性(attribute)來描述bean的property值。具體操作請看以下示例。

本例設(shè)計(jì)對象Topic、Speech和Speaker

具體實(shí)現(xiàn)如下:

  • Topic
public class Topic { 
 /**內(nèi)容   必須提供     getter 與 setter 方法*/
 public String context; 
 public String getContext() {
  return context;
 }
 
 public void setContext(String context) {
  this.context = context;
 }
 
 /**
  * 有參的構(gòu)造函數(shù) ,可選
  * @param context
  */
 public Topic(String context) {
  this.context = context;
 }
 
 /**
  * 無參數(shù)的構(gòu)造函數(shù)  , 必須提供一個(gè)無參的構(gòu)造函數(shù)
  */
 public Topic() {
 } 
}
  • Speech
public class Speech extends Topic {
 
 @Override
 public void setContext(String context) {
  super.context = context;
 }
}
  • Speaker
public class Speaker {
 
 /* 必須提供 getter 與 setter 方法 */
 private String name;
 private Topic highTopic;
 private Speech speech; 
 private int timeHour; 
 public Speech getSpeech() {
  return speech;
 }
 
 public void setSpeech(Speech speech) {
  this.speech = speech;
 }
 
 public String getName() {
  return name;
 }
 
 public void setName(String name) {
  this.name = name;
 }
 
 public Topic getTopic() {
  return highTopic;
 }
 
 public void setTopic(Topic highTopic) {
  this.highTopic = highTopic;
 }
 
 public int getTimeHour() {
  return timeHour;
 }
 
 public void setTimeHour(int timeHour) {
  this.timeHour = timeHour;
 }
 
 /**
  * 演講
  */
 public void speech() {
  System.out.println(toString());
 }
 
 @Override
 public String toString() {
  return "Speaker [name=" + name + ", highTopic="
    + highTopic.getContext() + ", speech=" + speech.getContext()
    + ", timeHour=" + timeHour + "]";
 }
}

根據(jù)以上對象代碼,在不使用Spring的p標(biāo)簽時(shí),相關(guān)的配置如下。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
 
 <bean id="highSpeaker01" class="com.mahaochen.spring.high.learn01.Speaker">
  <property name="name" value="lily" />
  <property name="highTopic" ref="highTopic" />
  <property name="speech" ref="highSpeech" />
  <property name="timeHour" value="2" />
 </bean>
 <bean id="highTopic" class="com.mahaochen.spring.high.learn01.Topic"
  p:context="heppy new year 2015!" />
 <bean id="highSpeech" class="com.mahaochen.spring.high.learn01.Speech"
  p:context="Welcome to 2015!" />
</beans>

P標(biāo)簽的出現(xiàn),旨在簡化配置,以下是使用P標(biāo)簽的配置文件,對比之后就會顯而易見。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns:p="http://www.springframework.org/schema/p"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
 
 <bean id="highSpeaker01" class="com.mahaochen.spring.high.learn01.Speaker"
  p:name="lily" p:topic-ref="highTopic" p:speech-ref="highSpeech"
  p:timeHour="2" />
 <bean id="highTopic" class="com.mahaochen.spring.high.learn01.Topic"
  p:context="heppy new year 2015!" />
 <bean id="highSpeech" class="com.mahaochen.spring.high.learn01.Speech"
  p:context="Welcome to 2015!" />
</beans>

從上面的bean定義中,我們采用p名稱空間的方式包含了叫name、timeHour的屬性,而Spring會知道我們的bean包含了一個(gè)屬性(property)定義。

我們前面說了,p名稱空間是不需要schema定義的,因此屬性(attribute)的名字就是你bean的property的名字。而第二個(gè)bean定義則采用p:topic-ref="highTopic"屬性(attribute)的方式達(dá)到了同樣的目的。

在這個(gè)例子中,"topic"是屬性(property)名,而"-ref“則用來說明該屬性不是一個(gè)具體的值而是對另外一個(gè)bean的引用。

spring配置p標(biāo)簽問題

今天學(xué)習(xí)spring遇到這樣的一個(gè)問題

spring中使用p標(biāo)簽代替<property> 以用來達(dá)到簡化的目的

但是如果在

<bean id="test" class="User" p:name="wangxiaoer"  p:list-ref="phone1">
<property name="list.brand" value="Huawei"/>
</bean>

這樣直接修改list中的屬性 是會報(bào)錯(cuò)的 因?yàn)槭褂昧藀標(biāo)簽的bean中 他的執(zhí)行順序是先執(zhí)行property標(biāo)簽中的內(nèi)容 而這里 因?yàn)橄葓?zhí)行了list.brand 這個(gè)屬性 對其修改 而這個(gè)對象還沒有引用 即get出來 所以直接修改是會報(bào)錯(cuò)的 主要原因是spring并不會幫我們自動創(chuàng)建所需要的對象 在這里使用即為null

解決方法如下

依然使用property 的方法 先進(jìn)行引用 再對其中的值進(jìn)行修改

...
<property name="phone" ref="phone1"/>
<property name="phone.brand" value="Huawei"/>

即可~

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 設(shè)置Myeclipse中的代碼格式化、注釋模板及保存時(shí)自動格式化

    設(shè)置Myeclipse中的代碼格式化、注釋模板及保存時(shí)自動格式化

    這篇文章主要介紹了設(shè)置Myeclipse中的代碼格式化、注釋模板及保存時(shí)自動格式化方法,需要的朋友可以參考下
    2014-10-10
  • IDEA之web項(xiàng)目導(dǎo)入jar包方式

    IDEA之web項(xiàng)目導(dǎo)入jar包方式

    這篇文章主要介紹了IDEA之web項(xiàng)目導(dǎo)入jar包方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • 關(guān)于SpringBoot的熱部署方案

    關(guān)于SpringBoot的熱部署方案

    這篇文章主要介紹了關(guān)于SpringBoot的熱部署方案,每次修改代碼就得將項(xiàng)目重啟,重新部署,對于一些大型應(yīng)用來說,重啟時(shí)間需要花費(fèi)大量的時(shí)間成本,本文就來詳解熱部署方案,需要的朋友可以參考下
    2023-05-05
  • java異或加密算法

    java異或加密算法

    這篇文章主要介紹了java異或加密算法,有需要的朋友可以參考一下
    2013-12-12
  • Java實(shí)現(xiàn)批量操作Excel的示例詳解

    Java實(shí)現(xiàn)批量操作Excel的示例詳解

    在操作Excel的場景中,通常會有一些針對Excel的批量操作,以GcExcel為例,為大家詳細(xì)介紹一下Java是如何實(shí)現(xiàn)批量操作Excel的,需要的可以參考一下
    2023-07-07
  • SpringData JPA快速上手之關(guān)聯(lián)查詢及JPQL語句書寫詳解

    SpringData JPA快速上手之關(guān)聯(lián)查詢及JPQL語句書寫詳解

    JPA都有SpringBoot的官方直接提供的starter,而Mybatis沒有,直到SpringBoot 3才開始加入到官方模版中,這篇文章主要介紹了SpringData JPA快速上手,關(guān)聯(lián)查詢,JPQL語句書寫的相關(guān)知識,感興趣的朋友一起看看吧
    2023-09-09
  • SpringBoot實(shí)現(xiàn)多個(gè)子域共享cookie的示例

    SpringBoot實(shí)現(xiàn)多個(gè)子域共享cookie的示例

    本文主要介紹了SpringBoot實(shí)現(xiàn)多個(gè)子域共享cookie的示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • spring cloud 使用Hystrix 實(shí)現(xiàn)斷路器進(jìn)行服務(wù)容錯(cuò)保護(hù)的方法

    spring cloud 使用Hystrix 實(shí)現(xiàn)斷路器進(jìn)行服務(wù)容錯(cuò)保護(hù)的方法

    本篇文章主要介紹了spring cloud 使用Hystrix 實(shí)現(xiàn)斷路器進(jìn)行服務(wù)容錯(cuò)保護(hù)的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-05-05
  • javaCV視頻處理之提取人像視頻

    javaCV視頻處理之提取人像視頻

    這篇文章主要介紹了利用JavaCV實(shí)現(xiàn)提取視頻中的人像并保存為視頻,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)JavaCV有一定的幫助,需要的可以參考一下
    2021-12-12
  • Java中FileOutputStream類的使用

    Java中FileOutputStream類的使用

    java.io.FileOutputStream類是文件輸出流,用于將數(shù)據(jù)寫出到文件,下面就來介紹一下Java中FileOutputStream類的使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10

最新評論

和田市| 金湖县| 盐亭县| 太仆寺旗| 土默特左旗| 枣阳市| 乐东| 穆棱市| 望谟县| 富锦市| 游戏| 芜湖县| 宜章县| 蒲江县| 宁城县| 章丘市| 东光县| 康定县| 浑源县| 稷山县| 平陆县| 轮台县| 新邵县| 木里| 岳池县| 呼和浩特市| 延安市| 普格县| 阳春市| 吉木萨尔县| 平遥县| 即墨市| 越西县| 军事| 日喀则市| 衡山县| 嵩明县| 寿宁县| 英山县| 抚州市| 阳西县|