91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring中P標簽的使用方法

發布時間:2021-08-16 18:06:02 來源:億速云 閱讀:182 作者:chen 欄目:開發技術

這篇文章主要講解了“Spring中P標簽的使用方法”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Spring中P標簽的使用方法”吧!

目錄
  • Spring P標簽的使用

    • 本例設計對象Topic、Speech和Speaker

  • spring配置p標簽問題

    • 今天學習spring遇到這樣的一個問題

    • 解決方法如下

Spring P標簽的使用

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

<?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支持使用名稱空間的可擴展配置格式。這些名稱空間都是基于一種XML Schema定義。事實上,我們所看到的所有bean的配置格式都是基于一個 XML Schema文檔。

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

本例設計對象Topic、Speech和Speaker

具體實現如下:

  • Topic

public class Topic { 
 /**內容   必須提供     getter 與 setter 方法*/
 public String context; 
 public String getContext() {
  return context;
 }
 
 public void setContext(String context) {
  this.context = context;
 }
 
 /**
  * 有參的構造函數 ,可選
  * @param context
  */
 public Topic(String context) {
  this.context = context;
 }
 
 /**
  * 無參數的構造函數  , 必須提供一個無參的構造函數
  */
 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 + "]";
 }
}

根據以上對象代碼,在不使用Spring的p標簽時,相關的配置如下。

<?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標簽的出現,旨在簡化配置,以下是使用P標簽的配置文件,對比之后就會顯而易見。

<?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包含了一個屬性(property)定義。

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

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

spring配置p標簽問題

今天學習spring遇到這樣的一個問題

spring中使用p標簽代替<property> 以用來達到簡化的目的

但是如果在

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

這樣直接修改list中的屬性 是會報錯的 因為使用了p標簽的bean中 他的執行順序是先執行property標簽中的內容 而這里 因為先執行了list.brand 這個屬性 對其修改 而這個對象還沒有引用 即get出來 所以直接修改是會報錯的 主要原因是spring并不會幫我們自動創建所需要的對象 在這里使用即為null

解決方法如下

依然使用property 的方法 先進行引用 再對其中的值進行修改

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

感謝各位的閱讀,以上就是“Spring中P標簽的使用方法”的內容了,經過本文的學習后,相信大家對Spring中P標簽的使用方法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

青浦区| 芦溪县| 克东县| 巴楚县| 台东市| 贵定县| 南陵县| 财经| 株洲市| 陈巴尔虎旗| 通化县| 香格里拉县| 中山市| 莫力| 黎城县| 郯城县| 油尖旺区| 弋阳县| 永善县| 德格县| 平凉市| 正宁县| 六盘水市| 都兰县| 康马县| 宝鸡市| 蒲江县| 井研县| 宣城市| 廊坊市| 苗栗县| 拉孜县| 瑞安市| 岫岩| 安福县| 浮梁县| 大厂| 沂源县| 酒泉市| 沈阳市| 资阳市|