Spring Boot: с
#SpringBoot #Hibernate
👉 Java Portal
org.hibernate.SQL=DEBUG можно получить более детальный вывод Hibernate-запросов прямо в логах.#SpringBoot #Hibernate
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Spring Boot: используй
#SpringBoot #SoftwareEngineering
👉 Java Portal
@EntityGraph для управления стратегиями загрузки и предотвращения N+1 запросов.#SpringBoot #SoftwareEngineering
Please open Telegram to view this post
VIEW IN TELEGRAM
🏆1
@Sql или @SqlGroup позволяют заранее загружать тестовые данные для выполнения воспроизводимых тестов.Позволяет:
#SpringBoot #IntegrationTesting
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
@ConditionalOnClass — это аннотация Spring Boot, которая используется в auto-configuration.#SpringBoot #Microservices
Please open Telegram to view this post
VIEW IN TELEGRAM
В новых приложениях на Spring Boot у тебя есть выбор использовать WebClient вместо RestTemplate.
Он реактивный и неблокирующий
Работает на основе event loop, а не модели «один поток на один запрос» (
#SpringBoot #JavaDev
👉 Java Portal
Он реактивный и неблокирующий
Работает на основе event loop, а не модели «один поток на один запрос» (
thread-per-request)#SpringBoot #JavaDev
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Spring Boot: с
#SpringBoot #SoftwareEngineering
👉 Java Portal
@RestControllerAdvice можно глобально обрабатывать конкретные типы исключений вместо того, чтобы разбрасывать try/catch по всему коду.#SpringBoot #SoftwareEngineering
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
Spring Boot:
#SpringBoot #SoftwareDevelopment
👉 Java Portal
spring.main.lazy-initialization=true не только откладывает создание бинов, но и полностью пропускает выполнение @PostConstruct до первого реального использования бина. Учитывайте это и следите за побочными эффектами.#SpringBoot #SoftwareDevelopment
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Spring Boot: Добавление ID трассировки запросов важно для отладки API
#SpringBoot #JavaDev
👉 Java Portal
#SpringBoot #JavaDev
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Совет по Spring Boot: с Spring Boot и Spring Security вы можете легко защитить эндпоинты.
Чтобы защитить следующий REST endpoint:
Можно написать конфигурацию вот так:
Пояснение:
#SpringBoot #SpringSecurity
👉 Java Portal
Чтобы защитить следующий REST endpoint:
@RestController
public class MyController {
@GetMapping("/admin")
public String admin() {
...
}
...
}
Можно написать конфигурацию вот так:
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/admin").authenticated()
.anyRequest().permitAll()
.and()
.httpBasic();
}
}
Пояснение:
authorizeRequests(): начинает определение эндпоинтов, которые нужно защитить.antMatchers("/admin").authenticated(): требует аутентификацию для /admin.anyRequest().permitAll(): все остальные эндпоинты являются публичными.httpBasic(): включает HTTP Basic-аутентификацию.#SpringBoot #SpringSecurity
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Spring Boot: в нём есть встроенная поддержка пагинации через
В репозиториях стоит использовать пагинацию вместо того, чтобы вытаскивать все данные сразу.
#SpringBoot #JavaDev
👉 Java Portal
Pageable.В репозиториях стоит использовать пагинацию вместо того, чтобы вытаскивать все данные сразу.
#SpringBoot #JavaDev
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Spring Cloud: централизуйте конфигурацию с помощью Spring Cloud Config вместо того, чтобы копировать
Используйте Spring Cloud Config для централизованного управления конфигурацией, а не копируйте
#SpringBoot #JavaDev
👉 Java Portal
application.properties в каждый сервис.Используйте Spring Cloud Config для централизованного управления конфигурацией, а не копируйте
application.properties повсюду.// — 1) Config Server: одно место, которое обслуживает конфигурацию всех сервисов —
@SpringBootApplication
@EnableConfigServer
public class ConfigServerApp {
public static void main(String[] args) {
new SpringApplicationBuilder(ConfigServerApp.class).run(args);
}
}
// — 2) application.yml сервера (раздаёт файлы из classpath) —
// spring.profiles.active: native # локальные файлы, Git не нужен
// spring.cloud.config.server.native.search-locations: classpath:/config
// server.port: 8888
// — 3) /config/client-service.yml (конфигурация для "client-service") —
// myproperty: value
// — 4) Клиент: загружает конфигурацию с сервера при запуске —
// spring.application.name: client-service
// spring.config.import: optional:configserver:http://localhost:8888
@Component
public class GreetingClient {
@Value("${myproperty}") // значение получено с Config Server
private String myProperty;
}
#SpringBoot #JavaDev
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM