5.03. Spring
Spring
★ Spring Framework – самый популярный фреймворк для создания масштабируемых, тестируемых и поддерживаемых Java-приложений. Он состоит из множества модулей, которые можно использовать отдельно или вместе.
Spring Core / IoC Container управляет жизненным циклом объектов, реализует принципы IoC (Inversion of Control) и DI (Dependency Injection).
Пример:
@Service
public class OrderService {
@Autowired
private PaymentService paymentService;
}
Используется при создании любого Spring-приложения для управления зависимости между компонентами.
Inversion of Control (IoC) – паттерн проектирования, который определяет, что объекты должны зависеть от абстракций, а не конкретных реализаций, и что объекты должны быть созданы и настроены вне зависимых классов.
Dependency Injection (DI) – процесс, при котором IoC применяется для внедрения зависимостей в объекты.
Spring Security предназначен для аутентификации и авторизации пользователей, с обеспечением защиты REST API, форм, WebSocket. Имеется поддержка OAuth2, JWT, LDAP, SAML, ролевого доступа (ROLE_ADMIN, ROLE_USER), CSRF защиты. Используется при необходимости ограничить доступ к ресурсам и для защиты веб-приложений и микросервисов.
Spring Data упрощает работу с базами данных, предоставляя готовые интерфейсы Repository для CRUD операций. Пример:
public interface UserRepository extends JpaRepository<User, Long> {
List<User> findByEmail(String email);
}
Поддерживает SQL и NoSQL. Используется при работе с БД и для автоматической генерации запросов.
Spring MVC предназначн для создания веб-приложений по паттерну MVC (Model-View-Controller).
Пример:
@Controller
public class HelloController {
@GetMapping("/hello")
public String sayHello(Model model) {
model.addAttribute("message", "Привет!");
return "hello";
}
}
Используется для создания традиционных веб-приложений (с HTML), и как основа для REST API (вместе с @RestController).
Spring Integration – для интеграции разных систем и протоколов, с поддержкой Enterprise Integration Patterns (EIP), HTTP, FTP, JMS, AMQP, Email, файловых систем и прочего. Используется при построении ESB (Enterprice Service Bus), для обмена данными между сервисами.
Spring Boot – для автоматической настройки Spring-приложений, минимизации кода, и встроенной поддержки серверов (Tomcat, Jetty).
Пример:
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
Используется для быстрого старта проекта, создания standalone (самостоятельных) приложений и в микросервисной архитектуре.
+
Аннотации в Spring