代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
public class MyFactoryBean implements FactoryBean {
@Override
public Object getObject() throws Exception {
return null;
}
@Override
public Class<?> getObjectType() {
return null;
}
@Override
public boolean isSingleton() {
return false;
}
}
|
getObject
:方法返回了用户创建的实例
getObjectType
:指明了创建的实例的类型
isSingleton
:指明了创建的实例是否是单例
具体使用时将FactoryBean注入到Spring上下文即可。注入后,通过id获取该FactoryBean得到的并不是该FactoryBean,而是getObject创建的Bean。如果在bean的名称前加一个&
符号,则可以获得到该工厂的bean。
1
2
3
4
|
run.getBean("myFactoryBean"); // 获取的是getObject创建的bean
run.getBean("&myFactoryBean"); // 获取的是myFactoryBean
|
据说MyBatis等框架都是通过这种方式注入的。