【使用场景】

  1. 当我们在一个单例Bean中需要引用一个原型Bean时,可以使用@Lookup方法注解
  2. 只能用于抽象类或接口中的方法定义,且必须在单例Bean中使用,否则会出现无限递归调用的问题


【注意事项】

  1. @Lookup 注解只能用于方法上,并且这个方法必须是抽象方法即不能是 final 方法。(注:官方推荐使用抽象方法,但网上有案例使用的普通方法)
  2. 返回类型必须是一个实现类,且该类需要由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