1
Správné použití @Transactional pro konzistenci dat
Chybně definovaná nebo chybějící transakce jsou častým zdrojem problémů s konzistencí dat. Ujistěte se, že anotace `@Transactional` je na správné úrovni (obvykle na servisní vrstvě) a pokrývá všechny operace, které by měly být provedeny atomicky. Zvažte správné nastavení rollback pravidel.
public class UserService {
@Autowired
private UserRepository userRepository;
@Transactional
public User createUser(User user) {
// ... logika pro vytvoření uživatele a dalších souvisejících entit
return userRepository.save(user);
}
}
2
Optimalizace dotazů v Spring Data JPA
Pomalé nebo neefektivní databázové dotazy mohou výrazně zpomalit vaši aplikaci. Používejte `Pageable` pro paginaci a vyhněte se načítání zbytečně velkého množství dat. Využívejte projekce pro výběr pouze potřebných polí.
public interface ProductRepository extends JpaRepository<Product, Long> {
List<Product> findByNameContainingIgnoreCase(String name, Pageable pageable);
@Query("SELECT p.name, p.price FROM Product p WHERE p.id = :id")
Object[] findProductNameAndPriceById(@Param("id") Long id);
}
3
Efektivní správa konfigurace s Spring Boot Profiles
Různá prostředí (vývoj, testování, produkce) vyžadují odlišnou konfiguraci. Používejte Spring Boot profily k dynamickému přepínání konfigurací, což zjednodušuje správu a snižuje riziko chyb. Každý profil by měl obsahovat pouze specifické nastavení.
# application-dev.properties
database.url=jdbc:h2:mem:testdb
# application-prod.properties
database.url=jdbc:postgresql://localhost:5432/mydb
4
Bezpečnostní aspekty: Využití Spring Security
Zabezpečení vaší aplikace je klíčové, zejména pokud zpracováváte citlivá data. Spring Security poskytuje robustní rámec pro autentizaci a autorizaci. Správná konfigurace zabrání neoprávněnému přístupu a ochraní vaše uživatele.
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http.authorizeHttpRequests(authorize -> authorize
.requestMatchers("/public/**").permitAll()
.requestMatchers("/admin/**").hasRole("ADMIN")
.anyRequest().authenticated()
);
return http.build();
}
}
5
Validace vstupů s Bean Validation (JSR 380)
Chybně validované vstupy mohou vést k neočekávanému chování aplikace a bezpečnostním zranitelnostem. Využívejte anotace jako `@NotNull`, `@Size`, `@Email` na vašich DTO a entitách. Spring Boot automaticky integruje Bean Validation.
public class UserDto {
@NotNull
@Size(min = 2, max = 50)
private String username;
@Email
private String email;
// getters and setters
}
6
Důležitost jednotkových a integračních testů
Psaní testů je zásadní pro udržení kvality kódu a rychlé odhalení chyb. Jednotkové testy ověřují jednotlivé komponenty izolovaně, zatímco integrační testy kontrolují interakci mezi více komponentami. Tímto způsobem zajistíte spolehlivost vaší aplikace.
7
Asynchronní zpracování s `@Async`
Pro úlohy, které nevyžadují okamžitou odezvu nebo mohou blokovat hlavní vlákno (např. odesílání emailů, zpracování velkých souborů), využijte anotaci `@Async`. To zlepší výkon a responzivitu vaší aplikace.
@Service
public class EmailService {
@Async
public void sendWelcomeEmail(User user) {
// ... logika pro odeslání emailu
}
}