本文部落格地址: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(轉載請註明出處)