factory-method: represents the factory method that will be invoked to inject the bean.
factory-bean: represents the reference of the bean by which factory method will be invoked. It is used if factory method is non-static.
可打印.java
package com.javatpoint;
public interface Printable {
void print();
}
答.java
package com.javatpoint;
public class A implements Printable{
@Override
public void print() {
System.out.println("hello a");
}
}
乙.java
package com.javatpoint;
public class B implements Printable{
@Override
public void print() {
System.out.println("hello b");
}
}
可打印工厂.java
package com.javatpoint;
public class PrintableFactory {
//non-static factory method
public Printable getPrintable(){
return new A();//return any one instance, either A or B
}
}
应用上下文.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="pfactory" class="com.javatpoint.PrintableFactory"></bean>
<bean id="p" class="com.javatpoint.Printable" factory-method="getPrintable"
factory-bean="pfactory"></bean>
</beans>
请注意,of 是一个非静态方法。通常,如果我们想要访问/调用方法或a类的其他资源,我们必须创建它的实例。同样,我们创造了豆子。使用Bean的引用变量,我们调用工厂方法。public Printable getPrintable()
PrintableFactory.java
pfactory
getPrintable