学习Spring(四) -- Spring的继承与依赖
2016-04-17 00:00
387 查看
摘要: 学习了使用spring配置文件,实现bean元素配置信息的继承与依赖
继承
在spring配置文件中,在bean元素里可以使用parent属性来实现配置信息的继承,比如需要十个学生类的bean,其中只有name属性值不同,其他属性都相同:
<bean id="student1" class="..." p:school="UCLA" p:name="s1" ...(其他属性) />
<bean id="student1" class="..." p:school="UCLA" p:name="s2"...(其他属性) />
<bean id="student1" class="..." p:school="UCLA" p:name="s3"...(其他属性) />
<bean id="student1" class="..." p:school="UCLA" p:name="s4"...(其他属性) />
<bean id="student1" class="..." p:school="UCLA" p:name="s5"...(其他属性) />
<bean id="student1" class="..." p:school="UCLA" p:name="s6"...(其他属性) />
<bean id="student1" class="..." p:school="UCLA" p:name="s7"...(其他属性) />
<bean id="student1" class="..." p:school="UCLA" p:name="s8"...(其他属性) />
<bean id="student1" class="..." p:school="UCLA" p:name="s9"...(其他属性) />
<bean id="student1" class="..." p:school="UCLA" p:name="s10"...(其他属性) />
在这种情况下可以使用parent属性来解决配置信息重复的问题:
其中第一个bean是abstract_student,该类有一个属性是abstract=true,将这个bean定义为抽象的,这个bean将不可以被容器get到。接下来的两个bean的parent属性都等于第一个bean的id,也就是继承了抽象bean的配置信息,可以通过重写属性来覆盖抽象bean的配置信息。
依赖
在spring配置文件中,可以强制使一个bean依赖另一个bean,比如,在创建一个person对象时,必须在配置文件中存在一个car的bean。
使用depen
3ff8
ds-on属性可以做到以上描述:
person1这个bean中的属性depends-on=car100,但是我们的配置文件中没有id=car100的bean,于是在getbean时会发生异常:
配置文件中,有一个car3,所以将depends-on=car3,在进行测试:
以上是spring配置文件的继承与依赖机制。
继承
在spring配置文件中,在bean元素里可以使用parent属性来实现配置信息的继承,比如需要十个学生类的bean,其中只有name属性值不同,其他属性都相同:
<bean id="student1" class="..." p:school="UCLA" p:name="s1" ...(其他属性) />
<bean id="student1" class="..." p:school="UCLA" p:name="s2"...(其他属性) />
<bean id="student1" class="..." p:school="UCLA" p:name="s3"...(其他属性) />
<bean id="student1" class="..." p:school="UCLA" p:name="s4"...(其他属性) />
<bean id="student1" class="..." p:school="UCLA" p:name="s5"...(其他属性) />
<bean id="student1" class="..." p:school="UCLA" p:name="s6"...(其他属性) />
<bean id="student1" class="..." p:school="UCLA" p:name="s7"...(其他属性) />
<bean id="student1" class="..." p:school="UCLA" p:name="s8"...(其他属性) />
<bean id="student1" class="..." p:school="UCLA" p:name="s9"...(其他属性) />
<bean id="student1" class="..." p:school="UCLA" p:name="s10"...(其他属性) />
在这种情况下可以使用parent属性来解决配置信息重复的问题:
<!-- 继承配置 --> <bean id="abstract_student" p:name="Lily" p:school="UCLA" abstract="true"></bean> <bean id="student2" class="cn.net.bysoft.lesson3.Student" parent="abstract_student"></bean> <bean id="student3" class="cn.net.bysoft.lesson3.Student" p:name="Jordan" p:school="NCSU" parent="abstract_student"></bean>
其中第一个bean是abstract_student,该类有一个属性是abstract=true,将这个bean定义为抽象的,这个bean将不可以被容器get到。接下来的两个bean的parent属性都等于第一个bean的id,也就是继承了抽象bean的配置信息,可以通过重写属性来覆盖抽象bean的配置信息。
@Test public void testParent() { Student student2 = (Student) ctx.getBean("student2"); Student student3 = (Student) ctx.getBean("student3"); System.out.println(student2); System.out.println(student3); /** * output:Student [name=Lily, school=UCLA] * Student [name=Jordan, school=NCSU] * */ }
依赖
在spring配置文件中,可以强制使一个bean依赖另一个bean,比如,在创建一个person对象时,必须在配置文件中存在一个car的bean。
使用depen
3ff8
ds-on属性可以做到以上描述:
<!-- 依赖配置 --> <bean id="car3" class="cn.net.bysoft.lesson3.Car" p:name="Audi" p:maxSpeed="300" p:price="500000.00" p:color="Red"></bean> <bean id="person1" class="cn.net.bysoft.lesson3.Person" p:name="James" depends-on="car100" p:car-ref="car3"></bean>
person1这个bean中的属性depends-on=car100,但是我们的配置文件中没有id=car100的bean,于是在getbean时会发生异常:
@Test public void testDependsOn() { Person person = (Person) ctx.getBean("person1"); System.out.println(person); /** * :警告: Exception encountered during context initialization - cancelling * refresh attempt: * org.springframework.beans.factory.NoSuchBeanDefinitionException: No * bean named 'car100' is defined * */ }
配置文件中,有一个car3,所以将depends-on=car3,在进行测试:
<!-- 依赖配置 --> <bean id="car3" class="cn.net.bysoft.lesson3.Car" p:name="Audi" p:maxSpeed="300" p:price="500000.00" p:color="Red"></bean> <bean id="person1" class="cn.net.bysoft.lesson3.Person" p:name="James" depends-on="car3" p:car-ref="car3"></bean>
@Test public void testDependsOn() { Person person = (Person) ctx.getBean("person1"); System.out.println(person); /** * output:Person [name=James, car=Car [name=Audi, maxSpeed=300, * price=500000.0, color=Red]] * */ }
以上是spring配置文件的继承与依赖机制。
相关文章推荐
- 学习Spring(五) -- Spring的配置文件引用
- java内省
- 如何写一个切换JDK版本的bat脚本
- Spring readOnly的简单用法
- 20145219 《Java程序设计》第07周学习总结
- [Spring]Annotation-based container configuration_AnotationBasis_03 --JSR 330 Standard Annotations
- 使用Nexus搭建Eclipse p2仓库镜像
- 排序(Java语言)——冒泡排序
- SpringMVC @ModelAttribute 的使用
- JAVA EE 基础语法 及注释的重要性。
- struts2入门
- Eclipse中的常用快捷键
- 初探JAVA中I/O流(二)
- 20145227 《Java程序设计》第7周学习总结
- PicketLink入门指南
- Springmvc异常之--通配符的匹配很全面, 但无法找到元素 'mvc:resources' 的声明
- Java List遍历中删除元素
- JAVA设计模式之------单例模式
- myeclipse 10 + Axis2-1.6.2 开发WebService
- 20145214 《Java程序设计》第7周学习总结