使用场景:
- 当我们在一个单例Bean中需要引用一个原型Bean时,可以使用@Lookup方法注解
- 只能用于抽象类或接口中的方法定义,且必须在单例Bean中使用,否则会出现无限递归调用的问题
注意事项:
- @Lookup 注解只能用于方法上,并且这个方法必须是抽象方法即不能是 final 方法。(注:官方推荐使用抽象方法,但网上有案例使用的普通方法)
- 返回类型必须是一个实现类,且该类需要由spring容器管理
官方demo:
public Object process(Object commandState) {
Command command = createCommand();
command.setState(commandState);
return command.execute();
}
@Lookup("myCommand")
protected abstract Command createCommand();
参考文献:Method Injection :: Spring Framework