Java
@javatg
1 9 837
@ConditionalOnClass - одна из тех аннотаций, из-за которых Spring Boot кажется умным.
@Configuration
@ConditionalOnClass(DataSource.class)
public class DataSourceAutoConfiguration
{
// загружается только если доступен javax.sql.DataSource
}
orderRepository.findAll()order.getItems().@EntityGraph.@EntityGraph(attributePaths = {"items"})JOIN, вместо десятков лишних походов в базу.LAZY сам по себе не зло. Зло - когда вы не контролируете, где и как он срабатывает.@EntityGraph - один из самых простых способов держать N+1 под контролем в Spring Boot.
`@Scheduled(fixedRate = 5000)`
`@Scheduled(fixedRateString = "${task.interval}")`
application.properties указать:
`task.interval=5000`
CORS в Spring Boot: не лечите это костылями на фронтеWebMvcConfigurer: указать маршруты, разрешенные origins, HTTP-методы, заголовки и работу с credentials.* везде подряд, особенно если используете cookies, токены или allowCredentials(true). В проде лучше явно перечислять доверенные домены, например frontend-домен приложения.
Spring Boot может тормозить сам себя из-за одного неаккуратного @ComponentScan
@SpringBootApplication
public class MyApplication { }
@ComponentScan({
"com.mycompany.myapp.product",
"com.mycompany.myapp.order"
})
@JsonIgnoreProperties(ignoreUnknown = true)
public class UserDTO {
private String name;
private int age;
}
«Git Pro: от первого коммита до уровня senior» — на Stepik
Objects.equals(a, b) — простой способ сравнивать значения без риска словить NPE.null → вернёт true null → вернёт false null → вызовет a.equals(b)a.equals(b) → может упасть с NullPointerExceptionObjects.equals(a, b) → всегда безопасно
int sumPrimitive = IntStream.of(1, 2, 3, 4, 5).sum();
IntStream
LongStream
DoubleStream
spring.main.allow-bean-definition-overriding=false
spring.main.allow-bean-definition-overriding=true
Платформа использует файлы cookie для авторизации и сохранения настроек. Продолжая работу, вы соглашаетесь с нашей Политикой использования cookie.