Код-ревью Middle Spring Boot и автоконфигурация обновлено
Код-ревью: конфигурация платёжного клиента
Вопрос
Найдите проблемы в конфигурации Spring Boot приложения.
@SpringBootApplication
@EnableWebMvc
public class ShopApplication {
public static void main(String[] args) {
SpringApplication.run(ShopApplication.class, args);
}
}
@Configuration
public class PaymentConfig {
@Value("${payments.url}")
private String url;
@Value("${payments.timeout}")
private int timeoutMs;
private final String apiKey = "sk_live_4f9a1c";
@Bean
public ObjectMapper objectMapper() {
return new ObjectMapper();
}
@Bean
public PaymentClient paymentClient() {
return new PaymentClient(url, timeoutMs, apiKey);
}
}
# application.yml
management:
endpoints:
web:
exposure:
include: "*"
Коротко
Типичные ошибки «сделали руками то, что Boot делает лучше»: @EnableWebMvc и свой ObjectMapper выключают автоконфигурацию. Настройки клиента нужно собрать в record с @ConfigurationProperties и @Validated, ключ вынести в переменную окружения, а Actuator открыть точечно.
Что должен найти ревьюер
- Ошибкастрока 2@EnableWebMvc отключает автоконфигурацию Spring MVC: пропадут настройки Boot (конвертеры, статика, свойства spring.mvc).
- Стильстрока 11Россыпь @Value вместо @ConfigurationProperties: нет валидации и типизации, timeout лучше хранить как Duration.
- Безопасностьстрока 15Боевой ключ API захардкожен в коде и попадёт в репозиторий. Секреты берут из окружения или хранилища секретов.
- Ошибкастрока 18Свой ObjectMapper через new отключает автоконфигурацию Jackson: пропадут модули (JavaTimeModule) и свойства spring.jackson, даты начнут сериализоваться иначе.
- Безопасностьстрока 33Открыты все эндпоинты Actuator, включая env и heapdump с секретами. Нужно открыть только health и metrics, остальное закрыть или вынести на отдельный порт.
Разбор
Типичные ошибки «сделали руками то, что Boot делает лучше»: @EnableWebMvc и свой ObjectMapper выключают автоконфигурацию. Настройки клиента нужно собрать в record с @ConfigurationProperties и @Validated, ключ вынести в переменную окружения, а Actuator открыть точечно.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.