Spring 配置继承

来源:互联网 发布:quectel ec20 linux 编辑:程序博客网 时间:2024/06/06 04:58

Spring IoC容器里配置Bean时,可能存在这样一种情况:多个Bean的配置有一部分是相同的,如果在每个Bean里都分别进行配置,就会产生很多重复代码,而且也很麻烦。

一般产生相同的配置,往往有两种情况:1.多个Bean需要注入相同的Bean;2.多个<bean>元素的属性相同。第一种情况比较好处理,把需要注入相同的bean单独配置,然后再注入到相关bean。第二种情况可以使用配置继承实现。下面小博老师通过一个例子给大家演示这两种情况的解决方案。

Dao类

  

 

ServiceA

  

ServiceB

  

ServiceAServiceB都引用了Dao对象,我们可以使用配置继承的方法完成Spring Bean的配置文件

  

service是一个纯粹的模板,没有配置class,指定了abstract属性的值为true,所以spring在加载的时候,不会初始化service bean,只会把它当做一个模板配置。ServiceA及serviceB的parent属性都是service bean所以都继承了service的dao属性配置,不再需要进行单独配置。

总结

Bean可以作为配置模板,也可以作为Bean实例。不过,如果只想把父Bean作为模板不被实例化,那么必须把abstract属性设为true,这样spring将不会实例化这个Bean。

注意:

1.并不是所有在父<bean>元素里定义的属性都会被继承。例如,autowire和dependency-check属性就不能被继承。

2.Bean配置的继承不是类的继承,它们之间没有任何关系。比如这个例子中ServiceA与ServiceB两个类之间并没有继承关系,也没有相同的父类,但可以实现配置继承。

0 0
原创粉丝点击