Największy brak to taki, że nie ma testów jednostkowych.
Zatrzymałem się także nad tym:
@Component
class TransactionFactory {
Transaction create(SendTransactionDTO dto, BankAccount bankAccount) {
return Transaction
.builder()
.title(dto.getTitle())
.description(dto.getDescription())
.senderAccountNumber(dto.getSenderAccountNumber())
.receiverAccountNumber(dto.getReceiverAccountNumber())
.date(LocalDateTime.now())
.amount(dto.getAmount())
.account(bankAccount)
.build();
}
}
Bo zwykle factory robi się tak, że metoda create jest statyczna i nie robi się z tego springowego komponentu:
public class TransactionFactory {
public static Transaction create(SendTransactionDTO dto, BankAccount bankAccount) {
return Transaction
.builder()
.title(dto.getTitle())
.description(dto.getDescription())
.senderAccountNumber(dto.getSenderAccountNumber())
.receiverAccountNumber(dto.getReceiverAccountNumber())
.date(LocalDateTime.now())
.amount(dto.getAmount())
.account(bankAccount)
.build();
}
}
Taka uwaga na temat użycia typu do pieniędzy, bo używasz zdaje się Double:
https://www.youtube.com/watch?v=1USy_dRBmsc
Zastanów się także, czy nazwa klasy SendTransactionDTO jest ok (chodzi o słówko Send) Dlaczego nie może być po prostu TransactionDTO.