需求
当我们在一个bean中依赖其他的bean时,我们可以注入其他依赖的bean通过set()或者构造器方法。
这样调用get方法的时候返回在bean中注入的实例。但是如果我们希望在每次调用get方法的时候返回新的实例。下面有两种方法可以实现。
方法一:
把注入的bean设置成单例,每次在调用get()方法的时候,通过applicationContext.getBean();此方法需要依赖applicationContext
方法二:
在抽象类中使用@Lookup注解
public static abstract class AbstractBean {
@Lookup
public abstract TestBean get();
@Lookup
public abstract TestBean get(String name); // overloaded
@Lookup
public abstract TestBean getOneArgument(String name);
@Lookup
public abstract TestBean getTwoArguments(String name, int age);
public abstract TestBean getThreeArguments(String name, int age, int anotherArg);
}
public static class BeanConsumer {
@Autowired
AbstractBean abstractBean;
}