Spring學習07 依賴配置:內部對象__spring

來源:互聯網
上載者:User

本文部落格地址:http://blog.csdn.net/soonfly/article/details/68928511(轉載請註明出處)

內部對象就是對象的裡面還有對象。。。。。好象是廢話。
比如訂單Order中,包含一個消費者Customer。那麼Customer就是Order對象的內部對象。(有人叫內部類,我覺得不妥。內部類是指一個類的定義放在另一個類的內部,而這裡是一個對象使用了另一個對象作為成員屬性)

Customer類:

public class Customer {private String name;    private String address;    private int age;    //getter and setter methods    @Override    public String toString() {        return "Person [address=" + address + ", age=" + age + ", name=" + name + "]";    }}

Order類:

public class Order {    /*comstomer和notifyservice都是Order的內部對象*/    private Customer customer;    private String orderno;    private NotifyService notifyservice;    public Order(){        this.customer=new Customer();    }    public Order(Customer customer, String orderno, NotifyService notifyservice) {        super();        this.customer = customer;        this.orderno = orderno;        this.notifyservice = notifyservice;    }    //getter and setter methods......    /*訂單支付完成後,系統通知老闆*/    public void PaySuccess(){        notifyservice.sendMessage("客戶"+customer.getName()+"完成訂單"+orderno+"付款,共人民幣:97.5元");    }}

然後在beans.xml定義bean對象

<bean id="order" class="twm.spring.start.Order">    <property name="customer">        <bean class="twm.spring.start.Customer">            <property name="name" value="陳先生"></property>            <property name="address" value="深圳南山區"></property>        </bean>    </property>    <property name="orderno" value="201799777799"></property>    <property name="notifyservice" ref="notify2"></property></bean><bean id="notifyfactory" class="twm.spring.start.NotifyFactory" /><bean id="notify2" factory-bean="notifyfactory" factory-method="getNotifyService" />

如果用構造注入則是:

<bean id="order" class="twm.spring.start.Order">    <constructor-arg name="customer">        <bean class="twm.spring.start.Customer">            <property name="name" value="陳先生"></property>            <property name="address" value="深圳南山區"></property>        </bean>    </constructor-arg>    <constructor-arg name="orderno" value="201799777799"></constructor-arg>    <constructor-arg name="notifyservice" ref="notify2"></constructor-arg></bean><bean id="notifyfactory" class="twm.spring.start.NotifyFactory" /><bean id="notify2" factory-bean="notifyfactory" factory-method="getNotifyService" />

setter注入和構造注入中,在<property>元素或者<constructor-arg>元素內定義<bean>元素,就是所謂的內部類。
比如當“陳先生”這個使用者只用在order2這個bean中使用,就沒必要在外面定義“陳先生”這個bean,再通過order2內部的ref引用了。
直接定義在order的<property>元素或者<constructor-arg>元素內定義“陳先生”bean更直觀。

內部bean的定義無需id或name;容器會忽略這些屬性,也會忽略scope標記。內部通常是匿名的,伴隨著外部類(的建立)而建立 。

本文部落格地址:http://blog.csdn.net/soonfly/article/details/68928511(轉載請註明出處)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.