Java Portal | Программирование
12.2K subscribers
1.37K photos
109 videos
42 files
1.38K links
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика

Связь: @devmangx

РКН: https://clck.ru/3H4WUg
Download Telegram
Spring Boot: можно добавить глобальные метаданные OpenAPI через аннотацию @OpenAPIDefinition.

Её размещают на основном классе приложения Spring Boot или в отдельном конфигурационном классе.

#SpringBoot #JavaDev

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
Spring Boot: используйте @Async только для небольших задач на оффлоадинг и только с явно заданным исполнителем.
#SpringBoot #SoftwareDevelopment

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
Spring Boot: с org.hibernate.SQL=DEBUG можно получить более детальный вывод Hibernate-запросов прямо в логах.

#SpringBoot #Hibernate

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Spring Boot: используй @EntityGraph для управления стратегиями загрузки и предотвращения N+1 запросов.
#SpringBoot #SoftwareEngineering

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
🏆1
@Sql или @SqlGroup позволяют заранее загружать тестовые данные для выполнения воспроизводимых тестов.

Позволяет:

Вставлять тестовые данные
Очищать таблицы
Сбрасывать состояние базы данных

#SpringBoot #IntegrationTesting

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
@ConditionalOnClass — это аннотация Spring Boot, которая используется в auto-configuration.

Она условно активирует bean или configuration только в том случае, если указанный класс присутствует в classpath.
#SpringBoot #Microservices

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
В новых приложениях на Spring Boot у тебя есть выбор использовать WebClient вместо RestTemplate.

Он реактивный и неблокирующий
Работает на основе event loop, а не модели «один поток на один запрос» (thread-per-request)

#SpringBoot #JavaDev

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Spring Boot: с @RestControllerAdvice можно глобально обрабатывать конкретные типы исключений вместо того, чтобы разбрасывать try/catch по всему коду.

#SpringBoot #SoftwareEngineering

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
3
Spring Boot: spring.main.lazy-initialization=true не только откладывает создание бинов, но и полностью пропускает выполнение @PostConstruct до первого реального использования бина. Учитывайте это и следите за побочными эффектами.

#SpringBoot #SoftwareDevelopment

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Spring Boot: Добавление ID трассировки запросов важно для отладки API
#SpringBoot #JavaDev

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM
Совет по Spring Boot: с Spring Boot и Spring Security вы можете легко защитить эндпоинты.

Чтобы защитить следующий 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

👉 Java Portal
Please open Telegram to view this post
VIEW IN TELEGRAM