本文博客地址: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.name
和customer.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(转载请注明出处)