首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >考虑在configuration[SpringBoot]中定义'int‘类型的bean

考虑在configuration[SpringBoot]中定义'int‘类型的bean
EN

Stack Overflow用户
提问于 2022-09-29 10:31:10
回答 2查看 87关注 0票数 0

这是我第一次在春季启动时使用crating,我正在尝试创建事务api。当我运行应用程序时,我得到了这个错误描述:中构造函数的参数0需要一个无法找到的'int‘类型的bean。操作:考虑在您的配置中定义'int‘类型的bean。

模态包: TransactionEntity

代码语言:javascript
运行
复制
@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;
}

TransactionRequest

代码语言:javascript
运行
复制
@Component
@Data
@Builder

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

}

TransactionResponse

代码语言:javascript
运行
复制
@Component
@Data
@Builder
public class TransactionResponse {
    private int userId;
    private int merchantId;
    private int clientReferenceId;
    private double amount;
    private LocalDateTime createdAt;
    private TransactionStatus status;
}

TransactionDao

代码语言:javascript
运行
复制
  @Component
    // Dao class
    public class TransactionDao {
    
        @Autowired
        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())
                    .createdAt(cuurentTime)
                    .updatedAt(cuurentTime)
                    .externalId(UUID.randomUUID())
                    .status(TransactionStatus.CREATED);
            transactionRepository.save(transactionEntity);
            return TransactionResponse.builder().status(transactionEntity.getStatus())
                    .createdAt(transactionEntity.getCreatedAt()).build();
    
        }
    
    }

TransactionService

代码语言:javascript
运行
复制
@Service
public class TransactoinService {
     @Autowired
     public TransactionDao transactionDao;
     public TransactionResponse createTransaction(TransactionRequest transactionRequest){
           return transactionDao.createTransaction(transactionRequest);
     }


}

TransactionController

代码语言:javascript
运行
复制
@RestController
public class TransactionController {
    @Autowired
    TransactoinService transactoinService;
    @PostMapping
    TransactionResponse  createTransaction(@RequestBody TransactionRequest transactionRequest){
        return transactoinService.createTransaction(transactionRequest);
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-29 11:29:46

TransactionRequest被注释为@Component,因此spring boot autoscan将尝试在该类之外创建一个@Bean

它还带有@Data注释,因此在创建bean Spring boot时,它试图将其他bean作为参数加入到all args constructor中,并且没有找到要注入constructor的"int“bean

我猜想事务响应不应该是@Component,或者至少不是Singleton bean。

票数 0
EN

Stack Overflow用户

发布于 2022-09-29 10:35:09

您不应该将POJO类创建为Spring。在您的@ComponentTransactionResponse POJO类中删除TransactionResponse注释。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73894036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档