JavaWeb application

Spring Boot część 2 – Adnotacje i obiekty zarządzane

CDI Contexts and Dependency Injection dostarcza programiście mechanizm, który automatycznie zarządza instancjami klas. Główne zalety to:

  • Brak potrzeby tworzenia klas z użyciem słowa kluczowego new;
  • Brak potrzeby przekazywania instancji klasy, by wywołać jej metodę w innej klasie.

Dla porównania

Kod napisany w Java SE:

public class Hello {
    public String sayHallo() {
        return "Hello!";
    }
}

 

public class Sample {
    public static void main(String[] args) {
        Hello hello = new Hello();
        hello.sayHallo();
    }
}

Kod napisany w Springu

@SpringBootApplication
public class HelloApplication {

    @Autowired
    Hello hello;

    public static void main(String[] args) {
        SpringApplication.run(HelloApplication.class, args); // uruchomienie kontekstu springa
    }

    @PostConstruct
    public void init() {
        System.out.println(hello.sayHallo());
    }
}
@Service
public class Hello {
    public String sayHallo() {
        return "Hello!";
    }
}

Rezultat działania obu programów jest identyczny. Dla osób początkujących trudnością mogą być adnotacje. Przyswojenie tych zasad przekłada się na owocny zysk – kod dużo prostszy, krótszy, co determinuje łatwość jego utrzymania.

To co zasłużyło na specjalną uwagę to adnotacja w klasie Hello jaką jest @Service. Otóż, aby korzystać z mechanizmu zarządzania zależnościami należy wskazać Spring’owi klasę, którą chcemy objąć takimi korzyściami. Wyżej wspomniana adnotacja służy nam właśnie do tego.

Adnotacja @Component jest nabardziej ogólna adnotacją jaką można w tym celu wykorzystać. Jest to informacja tylko i wyłącznie dla kompilatora, że ta klasa będzie zarządzania przez kontekst Spring.

Do dyspozycji są również inne – wyspecjalizowane adnotacje, które pełnią tą samą funkcje, jednak są zalecane do stosowania w zależności od przypadku. Są tą:

  • @Component – wspomniany na początku najbardziej ogólny
  • @ Repository – dedykowana dla klas, których zdaniem jest przechowywanie, agregowane danych
  • @Service – dedykowana klasom, które dostarczają usługi
  • @Controller/@RestController – dedykowany dla warstwy prezentacji lub/i dla API aplikacji

O klasach, które posiadają jedną z powyższych adnotacji oraz zostały uruchomione w ramach kontekstu Spring – nazwa się obiektami zarządzanymi.

Kolejny artykuł przedstawi przypadki kiedy wykorzystać mechanizm zarządzania beanów, a kiedy pozostawić klasę niezarządzaną.

Cały kurs opisujący mechanikę i działanie Spring Boot od podstaw znajdziesz tutaj: Kurs Spring Boot

Tags:
Show Buttons
Hide Buttons