Spring Boot

0

Cześć, może mi ktoś sensownie wytłumaczyć na czym polega Spring Boot razem z jakimiś przykładami w jaki sposób on pomaga w pisaniu webówki w Springu?
To jest tak, że od początku się pisze w spring-boocie?

1

SpringBoot to taki zestaw gotowych konfiguracji Springa do "standardowych zastosowań". Wrzucasz sobie w zależności jakiś spring-boot-starter-parent, robisz maina z @SpringBootApplication i magicznie różne rzeczy zaczynają się dziać same, beany się wykrywają aplikacja startuje servlet, kontrolery się mapują i takie tam. Automatycznie masz w kontekście dostepne różne ciekawe beany jak jakieś metryki na przykład. Dorzucasz spring-boot-starter-jdbc robisz plik properties z informacjami o data source i cyk pojawia sie bean z jdbctemplate skonfigurowanym pod tą bazę... ;]

1

Jak kolega wyżej napisał, Spring Boot autokonfiguruje beany na podstawie tego, co znajdzie na classpathie, w propertiesach itp.

Historycznie chodziło o to, aby w kolejnych projektach nie musieć od nowa konfigurować tych samych rzeczy (jak np. TransactionManager).

ALE każda „magia” ma swoją cenę i ja zawsze polecam nie zaczynać nauki Springa od Spring Boota, ale spróbować samemu skonfigurować taką aplikację od zera. Dlaczego tak? Bo potem pojawiają się pytania na forum pt. „Jakiej adnotacji mam użyć, aby osiągnąć X” :)

0

A będąc już w temacie Springu, w jakiej skali używa się w dzisiejszej produkcji Spring AOP?

2
piotrek2137 napisał(a):

A będąc już w temacie Springu, w jakiej skali używa się w dzisiejszej produkcji Spring AOP?

Oby w żadnej. Najgorsza magia w Springu jest pisana na aspektach

2
piotrek2137 napisał(a):

A będąc już w temacie Springu, w jakiej skali używa się w dzisiejszej produkcji Spring AOP?

J/W
Spring sam w sobie dużo używa AOP (głównie security, transakcje) ale samemu lepiej korzystać albo z technik OOP (kompozycja, proxy/dekorator) albo z FP (higher order function)
Zamiast używac np. AOPa do cachowania lepiej stworzyć rzeczywista klase (nie mam na mysli dynamic proxy) która będzie przechwytywac wywowłanie metod z klasy której wyniki cachujemy zamiast polegac na cudach AOPa

1

Akurat z obecnością AOP w projektach komercyjnych parę razy się spotkałem. Głównie do logów audytowych i performance'owych, czasem do cache'owania. Moim zdaniem warto wiedzieć z czym się to je, aby znać wady i zalety tego podejścia.
Polecam też przesłuchać ( tutaj akurat raczej o wadach AOP na przykładzie adnotacji @Transactional, która z wykorzystaniem tegoż AOP działa):

0

Wbiję kij w mrowisko, ale pytanie było czy się używa i odpowiedz brzmi: tak. Jest to mechanizm służący do ogrywania tzw. cross-cutting concerns.

Użycie @Transactional, @PreAuthorize czy @HystrixCommand jest na porządku dziennym. Wszelkie odstępstwa to albo brak wsparcia biblioteki (np. Resilience4j, ale pewnie do czasu), albo próba ograniczenia magii (np. stosując prog. funkcyjne) - słuszne, ale nie jest to podejście powszechne IMHO.

1

@Charles_Ray: "jedzmy g**no miliony much nie moga się mylić"
Akurat transactional łatwo opędzlować TransactionTemplate
poza tym jeśli będziemy zgadzać się na syf w kodzie to syf zostanie, a mimo wszystko pewne idee coraz bardziej przebijają się do mainstreamu (np. o mockosturbacji)

0
  1. Nie słyszałem określenia "mockosturbacja", raczej "overmocking". Rozumiem, że wzorujesz się na @jarekr000000, który chyba jest autorem tego określenia.
  2. Overmocking to w większości przypadków (oczywisty) błąd, natomiast nie nazwałbym użycia annotacji błędem. To kwestia wyboru rozwiązania, które opiera się na różnych driverach. Świat nie jest czarno-biały.
  3. Mówiłem, że wbiję kij w mrowisko :)

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