遇到一个使用xml文件进行bean注入,实现往一个bean中注入实例,逻辑如下:
A,B两个类都继承同一个接口,不给A类添加注解,而是使用xml文件生成bean,xml文件将A类设为bean,并添加属性properties,properties中标明ref为B类、C类、D类等,B类需要添加注解,生成bean。A类中可以直接使用properties,是一个list,list中是ref的实例。此时,在A类中可以直接使用B类,不用注入,直接使用。
先跑A类,在A类中调用B类、C类、D类等。
class A{
List<interfaceA> use;
...
}
@Component
class B implement interfaceA{...}
@Component
class C implement interfaceA{...}
@Component
class D implement interfaceA{...}
<bean id="beanname"
class="com.path.class.A">
<property name="use">
<list>
<ref bean="B"/>
<ref bean="C"/>
<ref bean="D"/>
</list>
</property>
</bean>
使用bean的页面上
class C {
@Autowired(name = "beanname")
private A a;
...
}
properties相当于将一个类注入进去当成是外部bean的属性。ref相当于引用,注入bean。
ref是注入实例,name是注入值。