这里有很多类似的问题,但没有一个说明如何去做。在这里,我如何 Autowiring CreateDatabaseAction bean 并使用它?它需要一个 Shoppingcart 对象,并且它不是 spring 管理的 bean。还是我必须使用新关键字创建它?
public abstract class AbstractServiceActions {
@Autowired
protected DatabaseModel dbModel;
protected User user;
public AbstractServiceActions(ShopingCart cart) {
this.user = user;
}
并实现它:
@Component
public class CreateDatabaseAction extends AbstractServiceActions {
public CreateDatabaseAction(ShoppingCArt cart){
super(cart);
}
}
最佳答案
如果没有该类型的托管 bean,则 Spring 无法知道在实例化 CreateDatabaseAction
时要使用哪个 ShoppingCart
实例。我认为你应该重新考虑设计。例如,将它作为方法参数发送到实际使用的地方,并将其从构造函数中删除。
仅考虑名称,我会说 ShoppingCart
是 session 作用域 bean 的一个很好的候选者。
关于java - Spring:如何 Autowiring 或(使用新的)带有构造函数参数且不是托管bean的bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30726510/