Skip to content

kbreczko/framework

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

framework

Opis:

Implementacja prostegu frameworku do wstrzykiwania zależności i przykład użycia.

Framework obsługuje:

  • wstrzykiwanie zależności
  • dostarczanie źródła definicji beanów (metody oznaczone adnotacją @Bean)
  • wyszukiwanie komponentów oznaczonych adnotacją (@Repository, @Service, @Component) w celu stworzenia beana
  • pobieranie beanów za pomocą metody getBean(Class<?> clazz)
  • wszystkie utworzone beany posiadają zasięg Singleton
  • zarządzanie transakcjami (możliwe propagacje: REQUIRED, REQUIRES_NEW)

Ograniczenia:

  • klasa zawierająca źródło beanów oraz komponenty powinny posiadać konstruktor zero argumentowy
  • wstrzykiwanie zależności tylko przez ustawienie adnotacji @Inject nad polem

Tworzenie beana:

  • Wyszukiwanie - jeśli bean został wcześniej stworzony to zwracana jest instancja utworzonego obiektu
  • Instancjonowanie – znajduje definicję beanu i instancjonuje bean
  • Wypełnianie właściwości – używając wstrzykiwania zależności, uzupełnia wszystkie właściwości określone za pomocą @Inject (w przypadku braku beanu zgłasza wyjątek)
  • Opakowanie w proxy jeśli jest to potrzebne

Kolejność wyboru typu wstrzykiwania:

  • po typie konkretnej klasy
Adnotacje:
Adnotacja Użycie Opis
@Inject Pole Wstrzykiwanie instancji klasy implementującej dany interfejs/klase
@Component Klasa Bazowy stereotyp, oznacza, że na podstawie tej klasy będzie utworzony bean
@Repository Klasa Wskazuje że klasa pozwala na dostęp do danych
@Service Klasa Stereotyp który wskazuje, że ta klasa jest serwisem
@Bean Metoda Metoda opatrzona @Bean zwróci obiekt, który powinien być zarejestrowany jako Bean w kontekście aplikacji
@PersistenceContext Pole Wstrzyknięcie proxy, który zapewnia dostarczenie aktualnego entity manager
@Transactional Metoda Metoda opatrzona @Transactional oznacza transakcje, którą zarządza menadżer transakcji
@ComponentScan Klasa Adnotacja dostarcza ścieżke w której należy szukać komponenty

About

Narzędzie ułatwiające szybsze i prostsze wytwarzanie kodu.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages