Spring:如何使用构造函数参数自动装配或(使用新的)bean,而不是托管bean

时间:2015-06-09 08:15:05

标签: java spring

这里有许多类似的问题,但没有一个显示如何做到这一点。在这里,我如何自动装配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);
      }

 }

1 个答案:

答案 0 :(得分:4)

如果没有该类型的托管bean,则Spring无法知道在实例化ShoppingCart时要使用的CreateDatabaseAction实例。我认为你应该重新考虑设计。例如,将其作为方法参数发送到实际使用的位置,并将其从构造函数中删除。

仅考虑名称,我会说ShoppingCart将是会话范围bean的一个很好的候选者。