#88 Ревью Spring-сервиса перевода денег
Сделать код-ревью:
@Data
class Account extends Object {
Float money;
String userName;
}
@Service
class Main_Account_Service extends Object {
@Autowired
public Datasource datasource;
/* Переводит деньги с одного аккаунта на другой */
public void TransferMoney(Account from, Account to, Float money) {
// блокируем первый счет
synchronized(from) {
// блокируем второй счет
synchronized(to) {
// переводим деньги
from.money = from.money - money;
to.money = to.money + money;
// сохраняем результат в БД
save(from);
save(to);
}
}
}
/* Сохраняет аккаунт в БД */
public void save(Account account) {
// соединение с БД
Connection conn = datasource.getConnection();
try {
// создаем запрос
Statement s = conn.createStatement();
// выполняем запрос
s.execute("UPDATE account SET money = " + account.money + " WHERE userName = '" + account.userName + "'");
} finally {
// закрываем соединение с БД
conn.close();
}
}
}
Разбор вопроса
Войди, чтобы начать диалог
Ментор ведёт диалог по текущему вопросу и учитывает предыдущие сообщения.
Войти
Доступно с Premium
Это лишь одно из решений, доступных с Premium. А ещё:
- 250+ продвинутых лекций
- 1300+ практических заданий
- 500+ решений задач с реальных собеседований
- Именные сертификаты Java Hub
- Расширенный доступ к AI-ментору