Spring中bean的依赖可以是某个类的field值,某个方法的返回值,或者某个bean的property值
(1)某个bean属性值的注入
通过PropertyPathFactoryBean类完成,用来获得某个bean的属性值,获得的值可以注入其他bean,也可以直接定义成新的bean
如果某个bean的某个property值是一个bean,可以用这个bean生成一个新的bean,如果是一个基本类型,也可以定义成为一个新的bean,生成一个新的bean时,并不能够确定该bean的实现类型,因此在客户应用程序中不要指定bean的类型。
利用PropertyPathFactoryBean需要提供两个属性值
targetBeanName:确定获取哪个bean的属性值
propertyPath:用于指定获取目标bean的哪个属性值
(2)field值的依赖注入
FieldRetrievingFactoryBean用来获得目标bean的field值,获得的值可以注入其他bean,也可以直接定义成新的bean
(3)方法返回值的注入通过MethodInvokingFactoryBean类完成,MethodInvokingFactoryBean用来获得某个方法的返回值,该方法既可以是静态方法,也可以是实例方法。
使用bean实例的方法返回值注入,通过MethodInvokingFactoryBean完成,需要指定一下两个属性:
targetObject:确定目标bean,该墓可以是容器中已经有的bean,也可以是嵌套的bean
targetMethod:确定目标方法,确定通过目标bean的哪个方法返回值注入
如果是静态方法的返回值,则需要指定
targetClass和targetMethod两个方法
高级依赖注入时,可以设置bean的属性,也可以生成新的bean