一 繼承
spring中多個bean之間的繼承關系,和面向對象中的繼承關系類似,直接看代碼。
先定義一個Person類
package com.demo.spring.entity; /** * @author chenyk * @date 2018年6月15日 */ public class Person { private String name; private String address; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } }
然后在beans.xml文件中配置:
<bean id="person" class="com.demo.spring.entity.Person" p:address="杭州" abstract="true"> </bean> <bean id="person2" p:name="李四" parent="person"> </bean>
在beans.xml中,我們定義了一個name為person的抽象類,它作為一個父類,封裝了共有的屬性值address="杭州",由於定義了abstract="true",所以它不能被實例化。然后定義了一個name為person2的類,繼承了person。
獲取person2對象
@Test public void testBeanFactory(){ ClassPathResource resource = new ClassPathResource("beans.xml"); //找到資源文件,將bean解析為beanDefinition, DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory(); XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(beanFactory); reader.loadBeanDefinitions(resource); //加載beanDefinition到容器中 Person person2 = (Person) beanFactory.getBean("person2"); System.out.println("name="+person2.getName()+";address="+person2.getAddress()); }
運行結果:name=李四;address=杭州
二 依賴:使用depends-on來實現依賴關系
定義一個Person類
package com.demo.spring.entity; /** * @author chenyk * @date 2018年6月15日 */ public class Person { private String name; private String address; private Air air; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public Air getAir() { return air; } public void setAir(Air air) { this.air = air; } }
定義Air類
package com.demo.spring.entity; /** * @author chenyk * @date 2018年6月15日 */ public class Air { }
在beans.xml中配置
<bean id="person" class="com.demo.spring.entity.Person" p:name="張三" p:address="杭州" abstract="true"> </bean> <bean id="person2" p:name="李四" parent="person" depends-on="air"> </bean> <bean id="air" class="com.demo.spring.entity.Air"> </bean>
depends-on標簽設置了依賴關系,則表示person2的屬性air必須存在,否則報錯;如果沒有depends-on標簽,則默認person2的屬性air為null。
三 注入 :
注入,我們也可以稱為依賴注入,注入的方式有三種:setter方法注入,構造器注入,通過注解的方式注入。這里就不詳細講解了