【Spring学习08】依赖配置:复合属性

前端之家收集整理的这篇文章主要介绍了【Spring学习08】依赖配置:复合属性前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

本文博客地址:http://www.jb51.cc/article/p-hhahdidx-bps.html(转载请注明出处)

接着上篇《【Spring学习07】依赖配置:内部对象 》的例子来。其实order的实例化还可以用复合属性来表示:

<bean id="order" class="twm.spring.start.Order">
    <property name="customer.name" value="陈先生" />
    <property name="customer.address" value="深圳南山区" />

    <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" />

customer.namecustomer.address就叫复合属性
用复合属性,必须保证在order构造函数执行后,customer不能为null,否则抛异常org.springframework.beans.NullValueInNestedPathException

因此这里要注意的,就是order的无参构造函数中是new了一个对象的(开始我也没有注意,而是报了错后才想起要加上
Order类:

public class Order {
    /*comstomer和notifyservice都是Order的内部对象*/
    private Customer customer;
    private String orderno;
    private NotifyService notifyservice;

    public Order(){
        //new了一个对象的
        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元");
    }
}

如果删掉this.customer=new Customer();这句,那么就会报错了:
Caused by: org.springframework.beans.NullValueInNestedPathException

本文博客地址:http://www.jb51.cc/article/p-hhahdidx-bps.html(转载请注明出处)

猜你在找的设计模式相关文章