Spring Flashcards
Co to jest Spring IoC Container?
- kontener leżący u podstaw Springa
- odpowiedzialny za** tworzenia, konfigurowanie i zarządzanie cyklem życia beanów**
- wykorzystuje Dependency Injection do zarządzania różnymi komponentami aplikacji Spring
Jakie są główne funkcje Spring IoC Container?
- Tworzenie Obiektów
- Wstrzykiwanie Zależności
- Zarządzanie Cyklem Życia
- Konfiguracja
- Aspektowe Programowanie (AOP)
- Usługi Kontenera
akie są główne implementacje kontenera IoC w Springu?
- ApplicationContext — zapewnia dodatkową funkcjonalność. Jest zbudowany na interfejsie BeanFactory.
- BeanFactory — wstępnie zapakowana klasa zawierająca kolekcję beanów. Tworzy instancję beana, gdy jest to wymagane przez klientów
Co umożliwia Aspektowe Programowanie (AOP) w kontekście Spring IoC Container?
Umożliwia przecinanie i rozwinięcie funkcjonalności beanów, pozwalając na dodanie dodatkowego zachowania do komponentów bez modyfikowania ich głównego kodu.
Jakie są zalety IoC (odwrócenie kontroli)?
- Separacja zależności od logiki biznesowej.
- Elastyczność konfiguracji zależności.
- Promocja “Single Responsibility Principle”.
- Ułatwienie testowania dzięki wstrzykiwaniu zależności.
- Odkładanie inicjalizacji obiektów.
- Zarządzanie cyklem życia obiektu przez kontener.
- Promocja luźnego powiązania (loose coupling) komponentów.
- Jednolita konfiguracja zależności w całej aplikacji.
- Wsparcie dla aspektowego programowania (AOP).
Jakie są główne zalety Spring Framework? (
- Wstrzykiwanie Zależności: Ułatwia modularność i testowalność dzięki kontenerowi IoC.
- Wszechstronność: Szeroki zakres modułów, od bezpieczeństwa po integrację z chmurą.
-
Integracja z Istniejącymi Technologiami: Łatwa integracja z technologiami takimi jak Hibernate, JPA, JMS.
4.** Zabezpieczenia**: Kompleksowe rozwiązania dzięki Spring Security. - Programowanie Aspektowe (AOP): Oddzielenie logiki biznesowej od przekrojowej.
@Component
- Oznacza klasę jako komponent Springa.
- Informuje kontener Springa, że klasa ma być zarejestrowana jako bean.
- jest używana do oznaczania klas w Springu, które mają zostać automatycznie wykryte przez skanowanie komponentów.
- spring tworzy instancje klasy w application context
- pochodne @Service , @Repository
Do czego służy @Autowired?
Umożliwia automatyczne wstrzykiwanie zależności (beanów) w komponencie Springa.
- gdy Spring Boot się włącza skanuje context w poszukiwaniu beanów które mają zależnośći i łaczy ze sobą , dzięki temu componenty są decoupled
- może być używany na konstrutkorze, setterach i fieldach
Jak działa adnotacja @Service?
Oznacza klasę jako serwis w architekturze Springa. Jest to specjalny typ @Component przeznaczony dla warstwy serwisów.
Co oznacza @Repository w Springu?
Oznacza klasę jako repozytorium, czyli komponent odpowiedzialny za operacje na bazie danych. Jest to specjalny typ @Component.
@Controller
- Oznacza klasę jako kontroler w Spring MVC.
- klasa również staje się beanem
- Kontroler obsługuje żądania użytkownika i zwraca odpowiedź.
Czym jest @RestController?
- Jest to połączenie @Controller i @ResponseBody.
- Używany w aplikacjach RESTful, gdzie odpowiedź jest zazwyczaj w formacie** JSON lub XML.**
Do czego służy @RequestMapping?
Definiuje adres URL, pod którym dany kontroler lub metoda kontrolera będzie dostępna.
@RestController public class ExampleController { @RequestMapping(value = "/hello", method = {RequestMethod.GET, RequestMethod.POST}) public String multipleMethodsHello() { return "Hello from either GET or POST request!"; } }
Jak działa adnotacja @Value?
Umożliwia wstrzykiwanie wartości z plików konfiguracyjnych do pól w komponencie Springa.
Czym jest @Qualifier?
Umożliwia dokładne określenie, który bean ma zostać wstrzyknięty, gdy istnieje kilka kandydatów.
Jakie jest zastosowanie @Transactional?
- Oznacza, że metoda ma być wykonana w kontekście transakcji.
- Używane głównie w warstwie serwisów do operacji na bazie danych.
@Bean
Używana w klasach konfiguracyjnych do wskazywania metod, które produkują beany do zarządzania przez kontener Springa.
@Configuration
Oznacza klasę jako źródło definicji beanów. Klasa taka może zawierać metody oznaczone** @Bean**.
@Scope
Określa zakres beanu. Możliwe wartości to: “singleton”, “prototype”, “request”, “session” i “application”.
@PostConstruct:
Oznacza metodę, która ma zostać wykonana po utworzeniu beanu, ale przed jego użyciem.
@PreDestroy
Oznacza metodę, która ma zostać wykonana przed zniszczeniem beanu przez kontener.
@PathVariable
Używana w Spring MVC do wiązania wartości segmentu ścieżki URL z parametrem metody.
@RequestBody
Używana w Spring MVC do wskazania, że argument metody powinien być deserializowany z ciała żądania HTTP.
@RequestParam
Wiąże wartość parametru żądania z parametrem metody w kontrolerze Spring MVC.
@ComponentScan
żywana w klasach konfiguracyjnych do wskazania pakietów, które mają zostać przeskanowane w poszukiwaniu komponentów Springa.
@Profile
Określa, w jakich profilach dany bean lub konfiguracja powinny być aktywne.
Adnotacje mapaowania żadań HTTP
@GetMapping: Mapuje żądania HTTP GET na konkretną metodę.
@PostMapping: Mapuje żądania HTTP POST.
@PutMapping: Mapuje żądania HTTP PUT.
@DeleteMapping: Mapuje żądania HTTP DELETE.
@RequestMapping: Ogólna adnotacja do mapowania żądań; można ją używać z różnymi typami żądań (GET, POST, PUT itp.), określając odpowiedni atrybut method.
jakie znasz Bean Scope w Springu
- Singleton – Instancja beana będzie tylko raz i ta sama instancja zostanie zwrócona przez kontener IOC. Jest to zakres domyślny.
- Prototype – nowa Instancja beana zostanie utworzona za każdym razem na żądanie.
- Request – Instancja bean zostanie utworzona na żądanie HTTP.
- Session – Instancja bean zostanie utworzona na sesję HTTP.
- Global session – Instancja bean zostanie utworzona podczas globalnej sesji HTTP.