Mirkasy,
chcę sobie ogarnąć Spring WebFlux i ogólnie potrzebuję jakiegoś publicznie dostępnego REST API udostępniające dane. Celem jest stworzenie serwisu, który będzie zaciągał skądś dane i następnie uderzał na reaktywny endpoint drugiego serwisu, który jakoś to będzie konsumował. To w ramach nauki. Accuweather odpada bo udostępnia tylko 50 requests per day. Chyba, ze macie jakiś inny pomysł jak można potestować/nauczyc się Webflux i reactive streams?
#java #spring #programowanie
chcę sobie ogarnąć Spring WebFlux i ogólnie potrzebuję jakiegoś publicznie dostępnego REST API udostępniające dane. Celem jest stworzenie serwisu, który będzie zaciągał skądś dane i następnie uderzał na reaktywny endpoint drugiego serwisu, który jakoś to będzie konsumował. To w ramach nauki. Accuweather odpada bo udostępnia tylko 50 requests per day. Chyba, ze macie jakiś inny pomysł jak można potestować/nauczyc się Webflux i reactive streams?
#java #spring #programowanie
public class DepositMoneyIntoAccount {
public void deposit(BigDecimal amountOfMoneyToDeposit, Account account, Wallet wallet) {
BigDecimal oldAccountMoney = account.getAccountMoney();
account.setAccountMoney(oldAccountMoney.add(amountOfMoneyToDeposit));
BigDecimal oldWalletMoney = wallet.getWalletMoney();
wallet.setWalletMoney(oldWalletMoney.subtract(amountOfMoneyToDeposit));
}
}
Czy to, że po ustawieniu właściwych wartości w account i wallet można potem ustawić za pomocą setterów jakieś absurdalne liczby np. account.setAccountMoneu(new BigDecimal(1000000000)" to jest problem (i jak go obejść) czy nie powinienem się tym przejmować?
#informatyka #naukaprogramowania #programowanie #programista15k #java
account
.charge(amount)
.fromWallet(wallet)
i symetrycznie:
wallet
.charge(amount)
.fromAccount(account)
Unikasz setterozo-getterozy, łatwiej jest zapewnić spójność danych.
Dodatkowo taka operacja może zwrócić wartość. Łatwiej będzie testować. Unikaj zwracania void.
ChargingRestult = account
.charge(amount)
.fromWallet(wallet)
Ewentualnie z Either (np Vavr.io):
Either = account
.charge(amount)
.fromWallet(wallet)