Struktura i kompozycja aplikacji w Springu

0

Przepraszam za banalne pytania, ale potrzebuję porady. Mam trzy pytania ws. Springa.

  1. Czy klasę uruchomieniową którą generuje Spring Boot (SpringApplicationRun.java) można traktować jako 'Main' i zrobić w nim swojego Maina, czy powinienem Maina osobno zrobić i go wstrzyknąć do klasy uruchomieniowej?

  2. Czy jeżeli tworzę Restowe API, encję User oraz interfejs UserRepository to czy powinienem wstrzyknąć UserRepository prosto do klasy gdzie zawierają się moje metody API czy powinienem zrobić klasę coś w stylu 'Managera', gdzie wstrzykuje UserRepository i tam tworzę metody które potem wstrzykuję prosto z managera do klasy gdzie są zawarte APi?

  3. Chcę ubrać powyższą Appkę we frontend. Czy Thymleaf pozwoli na stworzenie strony HTML gdzie mogę łączyć się z bazą danych i korzystać z zapytań restowych?

3
  1. SpringApplicationRun.java ma w sobie metodę main, która uruchamia magię springa metodą run
  2. Te klasy Manager, często są zwane Service w typowej 3-warstwowej architekturze. Tam wstrzykujesz UserRepository lub inne klasy Service
  3. Tak, ale to zapytania RESTowe łączą się z bazą
0
Productionserver napisał(a):
  1. SpringApplicationRun.java ma w sobie metodę main, która uruchamia magię springa metodą run
  2. Te klasy Manager, często są zwane Service w typowej 3-warstwowej architekturze. Tam wstrzykujesz UserRepository lub inne klasy Service
  3. Tak, ale to zapytania RESTowe łączą się z bazą

Ad1. Jeżeli appka ma menu, które zwykle pisałem w Mainie to czy powinienem menu appki pisać w SpringApplicationRun.java czy powinienem zrobić klasę np. UserMenu, którą wrzucę do klasy uruchomieniowej (+ implementacja CommandLinera )

Ad2. Czyli jeżeli ten manager to service to tam gdzie mam metody API to controller?

1
  1. zrobić klasę np. UserMenu (+ implementacja CommandLinera), nie dorzucasz jej do maina, zrób z niej beana, Spring sam to łyknie (najszybciej @Component)
  2. Nie rozumiem, masz np. UserController zwany czasami UserResource, który wystawia metody HTTP i wstrzykuje UserService. W tych metodach wołasz sobie odpowiednie funkcje z UserService
0
Java91 napisał(a):

Przepraszam za banalne pytania, ale potrzebuję porady. Mam trzy pytania ws. Springa.

  1. Czy klasę uruchomieniową którą generuje Spring Boot (SpringApplicationRun.java) można traktować jako 'Main' i zrobić w nim swojego Maina, czy powinienem Maina osobno zrobić i go wstrzyknąć do klasy uruchomieniowej?

Nie mam pojęcia z jakim koniem się kopiesz, ale Spring to środowsisko do uruchamiania sieciowych a bardziej webowych apliakcji.
Na serwerze, gdzie startowałby "jakiś" Main nikt nie zareaguje.

Pachnie, jakbyśmy myśleli o czymś totalnie odmiennym.

0

Czy jeżeli tworzę Restowe API, encję User oraz interfejs UserRepository to czy powinienem wstrzyknąć UserRepository prosto do klasy gdzie zawierają się moje metody API czy powinienem zrobić klasę coś w stylu 'Managera', gdzie wstrzykuje UserRepository i tam tworzę metody które potem wstrzykuję prosto z managera do klasy gdzie są zawarte APi?

Te klasy typu Service to często antypattern, bo mają za dużo funkcji i rozmytą odpowiedzialność, dwa wprowadzają programowanie proceduralne - bo tym są w praktyce. Ogólnie to jest bardzo zależne od aplikacji, jej rozmiaru, roli etc. Różne są style architektoniczne, a jeśli aplikacja to zwykły CRUD to nawet nie widze sensu w posiadaniu tych "serwisów"

Czy klasę uruchomieniową którą generuje Spring Boot (SpringApplicationRun.java) można traktować jako 'Main' i zrobić w nim swojego Maina, czy powinienem Maina osobno zrobić i go wstrzyknąć do klasy uruchomieniowej?

Metoda main w Springu niczym się nie różni od innych mainów, poza tym że na końcu uruchamiasz Springa.
Przed wywołaniem

		SpringApplication.run(Application.class, args);

robisz co tam sobie chcesz

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