Spring Bean配置继承

问题描述---为什么Bean配置需要能够继承?

在Spring Ico容器里配置Bean时,可能存在这样一种情况:多个Bean的配置有一部分是相同的,如果在每个Bean里都进行配置,就会显得很麻烦。

相同的配置往往有两种情况:1.多个Bean需要注入相同的Bean;2.多个元素的属性相同。

解决方案

将多个Bean相同的部分抽象为一个Bean,然后让这多个Bean继承它。

实现案例

class Dao{
	public void daoM(){
		System.out.println("doaM");
	}
}

class ServiceA {
	private Dao dao;
	
	public void setDao(Dao dao) {
		this.dao = dao;
	}

	public void serviceA_M(){
		dao.daoM();
	}
}

class ServiceB {
	private Dao dao;
	
	public void setDao(Dao dao) {
		this.dao = dao;
	}

	public void serviceB_M(){
		dao.daoM();
	}
}

Bean配置



           
      
      
      	
      		
      	
      
      
      

注:抽象出来的bean并未指定class。

测试

public static void main(String[] args) {
		ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
		ServiceA serviceA = (ServiceA) context.getBean("serviceA");
		serviceA.serviceA_M();
		ServiceB serviceB = (ServiceB) context.getBean("serviceB");
		serviceB.serviceB_M();

	}

总结

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

注意:

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

2.Bean配置的继承不是类的继承,它们之间没有任何关系。


你可能感兴趣的:(Spring)