【问题标题】:Consider defining a bean of type 'int' in your configuration[SpringBoot]考虑在你的配置中定义一个类型为\'int\'的bean[Spring Boot]
【发布时间】:2022-09-29 18:35:09
【问题描述】:

这是我第一次在 Spring Boot 中创建 api,我正在尝试创建事务 api。当我运行应用程序时,我收到此错误描述: TransactionService.transactionService.modal.TransactionRequest 中构造函数的参数 0 需要找不到类型为 \'int\' 的 bean。 行动: 考虑在你的配置中定义一个 \'int\' 类型的 bean。

模态包: 交易实体

@Getter
@Setter
@Builder
@Entity
public class TransactionEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private  int transactionId;
    @NotNull
    @Column(unique = true)
    private UUID externalId;
    @NotNull
    private int userId;
    @NotNull
    private int merchantId;
    @NotNull
    private int clientReferenceId;
    @NotNull
    private double amount;
    @Enumerated(EnumType.STRING)
    @NotNull
    private TransactionStatus status;
    @NotNull
    private String createdBy;
     private String updatedBy;
     @NotNull
    private LocalDateTime createdAt;
     @NotNull
    private LocalDateTime updatedAt;
}

事务请求

@Component
@Data
@Builder

public class TransactionRequest {
      private int userId;
      private int merchantId;
      private int clientReferenceId;
      private double amount;
      private String createdBy;

}

事务响应

@Component
@Data
@Builder
public class TransactionResponse {
    private int userId;
    private int merchantId;
    private int clientReferenceId;
    private double amount;
    private LocalDateTime createdAt;
    private TransactionStatus status;
}

交易道

@Component
// Dao class
public class TransactionDao {

    TransactionRepository transactionRepository;
    TransactionEntity transactionEntity;
    public TransactionResponse createTransaction(TransactionRequest transactionRequest){

        LocalDateTime cuurentTime = LocalDateTime.now();
        TransactionEntity.builder().userId(transactionRequest.getUserId())
                .merchantId(transactionRequest.getMerchantId())
                .clientReferenceId(transactionRequest.getClientReferenceId())
                .amount(transactionRequest.getAmount())
                .createdBy(transactionRequest.getCreatedBy());
        transactionEntity.setCreatedAt(cuurentTime);
        transactionEntity.setUpdatedAt(cuurentTime);
        transactionEntity.setExternalId(UUID.randomUUID());
        transactionEntity.setStatus(TransactionStatus.CREATED);
        transactionRepository.save(transactionEntity);
        return TransactionResponse.builder().status(transactionEntity.getStatus())
                .createdAt(transactionEntity.getCreatedAt()).build();

    }

}

事务服务

@Service
public class TransactoinService {
     @Autowired
     public TransactionDao transactionDao;
     public TransactionResponse createTransaction(TransactionRequest transactionRequest){
           return transactionDao.createTransaction(transactionRequest);
     }


}

事务控制器

@RestController
public class TransactionController {
    @Autowired
    TransactoinService transactoinService;
    @PostMapping
    TransactionResponse  createTransaction(@RequestBody TransactionRequest transactionRequest){
        return transactoinService.createTransaction(transactionRequest);
    }
}

    标签: spring-boot spring-data-jpa


    【解决方案1】:

    您不应将 POJO 类创建为 Spring Bean。删除 TransactionResponseTransactionResponse POJO 类中的 @Component 注释。

    【讨论】:

      猜你喜欢
      • 2017-03-16
      • 2021-04-04
      • 1970-01-01
      • 2018-06-22
      • 1970-01-01
      • 2020-08-01
      • 2019-02-14
      • 2018-12-21
      • 2019-05-10
      相关资源
      最近更新 更多