Spring- co to znaczy utworzyć beana ?

Odpowiedz Nowy wątek
2016-10-23 23:36
Pijany Szczur
0

Cześć,
jestem na etapie poznawania springa.
Aczkolwiek nie rozumiem paru rzeczy. Czyta tutoriale, kombinuję, ale często w tutorialach piszą rzeczy, których nie jestem w stanie zrozumieć. Może ktoś to wyłtumaczyć ?

  1. Co to znaczy utworzyć beana ?
  2. W którym momencie następuje wstrzyknięcie zależności ?
  3. Jaka jest ogólna idea tych beanów ?
  4. W którym momencie jest parsowany plik xml Springa ? Tzn jak to działa ? JVM to odpala ? Na początku ?

Pozostało 580 znaków

2016-10-23 23:47
0
  1. Zgaduje ze autorowi tutoriala chodzi o utworzenie klasy która będzie miała adnotacje @Named albo @Service czyli będzie zarządzana przez Springa/CDI
  2. Generalnie w chwili tworzenia obiektów którymi Spring zarządza, czyli kiedy zostanie wczytany kontekst definiujacy wszystkie beany
  3. Nie do końca rozumiem pytanie.
  4. Wtedy kiedy go załadujesz. W przypadku aplikacji Spring MVC dzieje się to przy starcie aplikacji w kontenerzem ale dla innych aplikacji musisz sam utworzyc sobie kontekst i załadować deskryptor.

Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2016-10-23 23:49
Pijany Szczur
0

musisz sam utworzyc sobie kontekst i załadować deskryptor.

Co znaczy załadować deskryptor ?
Bo wiem, że tworzy się obiekty Springowe, podaje ścieżkę do xml-a.

  1. Generalnie w chwili tworzenia obiektów którymi Spring zarządza, czyli kiedy zostanie wczytany kontekst definiujacy wszystkie beany

Którymi obiektami zarządza spring ?

Pozostało 580 znaków

2016-10-23 23:53
1

Konfiguracja Springa to niekoniecznie xml. Ba, od dawna odchodzi się od xmla na rzecz class configuration, ale to akurat szczegół. Chodziło mi tutaj np. o utworzenie ApplicationContext albo BeanFactory do którego podajesz swój xml (albo inną konfiguracje)

Spring zarządza obiektami które są zdefiniowane w kontekście. Zwykle to klasy opatrzone odpowiednimi adnotacjami (Named, Service, Repository etc) lub obiekty explicite zdefiniowane w konfiguracji jako @Bean lub <bean> (dla xmla). Dodatkowo te wszystkie klasy muszą być widoczne dla springa wiec jeśli masz jakiś component-scan który wskazuje na to które pakiety skanować w poszukiwaniu obiektów to musisz podać odpowiedni pakiet.


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2016-10-23 23:58
Pijany Szczur
0

Ok, wszystko wydaje się zawiłe,
no powiedzmy, że mam w xmlu beana o id=moobiekt.
Kiedy ten bean zostanie stworzony ? Co moze się stać w trakcie tworzenia takiego beana ? Wiem np., że mogą zostać ustalone składowe, np z jakiegoś pliku konfiguracyjnego. ALe czy tylko tyle ?>

Pozostało 580 znaków

2016-10-24 00:01
0

Ja od siebie polecę książkę https://www.manning.com/books/spring-in-action-fourth-edition (lub jej polski odpowiednik, jeśli z ang problem), jeżeli tutoriale Ci nie podchodzą ;)

Pozostało 580 znaków

2016-10-24 00:01
0

Zostanie utworzony zapewne kiedy ten xml zostanie podany do jakiegoś ApplicationContext. Wiec jak sobie zrobisz new ClasspathApplicationContext("moj.xml"); czy coś w tym stylu. W trakcie tworzenia ten bean otrzyma zalezności które zadeklarowano przez @Inject, @Autowired albo explicite w tym twoim xmlu. Dodatkowo ten twój obiekt sam też zostanie wstrzyknięty do innych beanów które go wymagają.


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...

Pozostało 580 znaków

2016-10-24 00:04
Pijany Szczur
0

Wydaje się, że bean to jest tak na prawdę obiekt.. bo na czym niby polega różnica ?

Pozostało 580 znaków

2016-10-24 00:06
0
Pijany Szczur napisał(a):

Wydaje się, że bean to jest tak na prawdę obiekt.. bo na czym niby polega różnica ?

Pewnie, że jest, tylko zarządzany przez Springa, jak wspomniał wyżej @Shalom ;)

Pozostało 580 znaków

2016-10-24 00:07
Pijany Szczur
0

Dodatkowo ten twój obiekt sam też zostanie wstrzyknięty do innych beanów które go wymagają.

Możesz rozwinąć ? Kiedy inne beany potrzebują mojego obiektu ?

Pozostało 580 znaków

2016-10-24 00:14
0

Kiedy w innej klasie zarządzanej przez Springa/CDI, dodasz zależność na jakiegoś beana, np:


@Component
public class Boo {
  public Boo() { }
}

@Component
public class Foo {

  Boo boo;

  @Autowired
  public Foo(Boo boo) {
    this.boo = boo;
  }
}

Dzięki adnotacji @Autowired na konstruktorze(może być bezpośrednio na polu) spring spróbuje wstrzyknąć zależność, jaką jest Boo, do klasy Foo.

edytowany 2x, ostatnio: Shakaz, 2016-10-24 00:16

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0