java - Spring:如何 Autowiring 或(使用新的)带有构造函数参数且不是托管bean的bean

标签 java spring

这里有很多类似的问题,但没有一个说明如何去做。在这里,我如何 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/

相关文章:

java - Azure 服务总线队列 - JMS 消息监听器调用程序设置因目标异常而失败

java - 如何重试 Camel 直达路线一次?

java - 我需要一种更有效的方法来验证字符串中的前两个字符是字母,其余是数字

java - 如何计算集合而不是集合的排列

spring - 不想在应用程序启动期间连接到 cassandra 接触点 - Spring Data Cassandra

java - 使用具有一对多关系的 CriteriaBuilder 的 Spring Data JPA 规范

java - 无法访问 Sonarqube Web 服务 API

java - JVM 类格式 : Why is `constant_pool_count` one larger than it "should" be?

spring - Spring 多部分文件上传究竟是如何工作的?

java - 如何仅在之前未加载 bean 的情况下创建 bean 定义?