Hej, zaczynam robić aplikacje webową i mam problem z zaprojektowaniem struktury modelu tak zeby było optymalnie. Mam dwa typy userów: Provider oraz Customer, aby nie powielać wspolnych pól dziedziczą one po klasie User. Teraz chce wygenerować repozytoria za pomocą spring data oraz oddzielić te repozytoria od kontrolera za pomocą warstwy service. A więc w kontrolerze CustomerController będzie wstrzyknięta implementacja CustomeService w którym będzie wstrzyknięte repozytorium CustomerRepository. Analogiczna sytuacja będzie dla ProviderCustomer.
Teraz
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@stylusc84: wspólne zachowanie dodaj w bazowym UserServiceImpl, który rozszerzają CustomerServiceImpl i ProviderServiceImpl
w tej chwili jest jeszcze inny problem, wyciągając dane z CustomerRepository zostaną wyciągnięte też te dane z users, które mają role specyficzną dla Provider, żeby to ograniczyć zobacz na @DiscriminatorColumn
  • Odpowiedz
@Lewo: jeden rabin powie tak, a drugi nie. Ja bym najpierw nauczył się Spring Boota (bo łatwiej), a potem w miarę potrzeby rozszerzał wiedzę o samego Springa.
  • Odpowiedz
Jeśli ma to być duże produkcyjne rozwiązanie a do tego tanie w utrzymaniu (głównie chodzi mi o łatwość ogarnięcia programistów) to zdecydowanie Spring. Szczególnie jeśli masz do zrobienia jakiś większy monolit - nie bawiłbym się wtedy w lekkie frameworki. A jeśli będziesz pisał mikroserwisy to właściwie nic nie stoi na przeszkodzie, żeby w niektórych użyć Springa a w innych Ktora.
  • Odpowiedz
@gos4k: Dzięki za odpowiedź, Jeżeli chodzi o projekt to bardziej dla siebie. A inne raczej już biznesowo. Też skłaniam się własnie ku springowi. Mimo to też chciałem poznać innych opinie :)
  • Odpowiedz
via Wykop Mobilny (Android)
  • 2
Jaki polecacie #nas do zastosowania domowego?
Wymagania:
4 zatoki
#docker lub #linux - generalnie coś abym mógł sobie postawić 1 lub 2 male aplikacje w #spring
Dostęp po SSH
Łopatologiczna obsługa dla pozostałych członków rodziny
  • 13
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

via Wykop Mobilny (Android)
  • 1
@wytrzzeszcz: bo wolę jakieś rozwiązanie które będzie wymagało minimum pracy na wejściu aby pracowało zgodnie z oczekiwaniami. Druga sprawa że wiem że jak będę miał za dużo możliwości to w końcu coś rozpieprze lub doprowadzę do stanu gdzie ciężko będzie z tym pracować
  • Odpowiedz
Jak w spring data rest w przypadku relacji jeden do wielu dodać coś ze strony wiele do strony jeden?

Załóżmy, że jest encja Post w relacji jeden do wielu z encją Comment

No i np dodam sobie comment, robię posta pod adres

/commments
  • 12
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@kebab-case: tak no w takim wypadku post bez właściciela nie ma sensu zależność bym pozostawił, nie wiem jak Ty masz to zrobione ale ja w CommentRepo dodał bym metodę List findByAccounts(Account account); Jeżeli wcześniej można było wywołać account.getPosts(), to teraz działa z repo. Masz usunięty błędny kod z domeny i stworzyłeś wyraźny kierunek zależności od postu do autora. Posty zależą od autorów, ale nie odwrotnie.
  • Odpowiedz
Cześć. Szukam rozwiązania odnośnie alertów/powiadomień (coś w rodzaju, że przyszła wiadomość) na frontendzie. Korzystam z Reacta i Springa. Mam dwa pomysły:

1. Wykorzystać Server Sent Events i na froncie po prostu nasłuchiwać eventy z serwera.
2. Co jakiś czas odpytywać serwer o nieprzeczytane powiadomienia.

Co jest obecnie wykorzystywane w tym celu?
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Przy tworzeniu RESTowych endpointów lepiej wyrzucać ResponseStatusException prost z miejsca gdzie jest błąd czy najpierw rzucić jakiś customowy wyjątek, a dopiero z np. ControllerAdvice rzucić / zwrócić ResponseStatusException?

#naukaprogramowania #java #spring
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@krasnoludkolo: mam kilka przypadków gdzie chce tego użyć
1. łapie ConnectionException przy próbie łączenia do Rabbita ale chce żeby od razu poszła odpowiedź do klienta i mam w planie wyrzucić ResponseStatusException bo to się samo ładnie mappuje na responsa.
2. w metodzie preHandle z HandlerInterceptor gdy request nie spełni mi warunków (np. brakujące headery, zły token) to chce wyrzucić ten wyjątek i w zależności od problemu użyć odpowiedniego kodu odpowiedzi
  • Odpowiedz
Jak byście takie coś przetestowali? #spring #java a raczej #kotlin
Mam swój własny projekcik, w którym użytkownik wykonuje jakąś akcję i włącza się timer, który za jaki czas wywoła jakąś kolejną akcję. Ten timer działa na scheduled executorze, więc dopóki aplikacja działa to wszystko jest w porządku, gorzej jak timer się stworzy, a zaraz aplikacja padnie i nie zdąży się wykonać. W takim przypadku mam w
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@SuppressWarnings: Nie kumam. Masz jakąś funkcję, która przy wstawaniu zczytuje z bazy te wpisy i odpala zaległe akcje? To napisz test w który mockujesz bazę i odpalasz tą funkcję i zobacz czy odpali akcje które powinna.
  • Odpowiedz
Mircy! Potrzebuję pomocy z projektem jednej apki. Sprawa wygląda następująco:
Mirkoserwis A:
- pobiera JSON'a z MongoDB który ma staus NEW
- tworzy jakiegoś joba w którym mamy x stepów (w zależności od tego jak musi zostać przetransformowany JSON) i go odpala
- dla przykładu step1 wrzuca id z bazy danych do kolejki rabbitowej i wtedy ten job nie blokuje mikroserwisu tylko czeka, aż mikroserwis B zrobi swoje, a w międzyczasie bierze następny rekord z bazy,
  • 4
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@sprayy: Już sam fakt że dwa mikroserwisy korzystają z tej samej bazy danych sugeruje że być może problem jest już na poziomie designu. Tak przynajmniej wynika ze schematu. To z kolei sugeruje że być może w rzeczywistości nie macie mikroserwisów, a rozproszony monolit. Nie pisze tego żeby się czepiać, tylko być może rzuci to Wam inne światło na ten problem.

Co do rozwiązania, to moim zdaniem opcje są dwie:
a)
  • Odpowiedz
@zajety_login: nie ma my, jestem tylko ja ;)
dwa mikroserwisy korzystają z tej samej bazy danych żeby nie rzucać do kolejki całego payload'u tylko ID i one będą sobie same pobierać payload do transformacji z bazy.

Na schemacie nie dodałem strzałki między DB a C. On też dostanie z kolejki tylko ID, pobierze payload i wyśle. Przynajmniej tak założyłem ;)

a) nie chciałbym scalać, żeby w paragrafie 'plany na przyszłość' móc napisać, że
  • Odpowiedz
Spring Boot Actuator to narzędzie które pozwala nam na monitorowanie naszej aplikacji napisanej w #spring.
Dzisiaj w #od0dopentestera nieco inne spojrzenie na ten mechanizm.

W standardowej konfiguracji z poziomu interfejsu webowego dostępne są endpointy health oraz info.
Wygodny programista może jednak użyć gwiazdki - aby udostępnić na stronie wszystkie funkcjonalności.
Pod niektórymi adresami możemy odnaleźć
KacperSzurek - Spring Boot Actuator to narzędzie które pozwala nam na monitorowanie n...
  • 10
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@walic_nowy_odtwarzacz: Spring Boot ma wbudowany serwer więc nie trzeba kombinować z tomcatami i innymi syfami które potrafią się wywalić na starcie. To po prostu działa. Konfiguracja też jest o wiele prostsza. Po to właśnie powstał Spring boot. Spring to bardzo przyjemny framework i da się na nim zbudować potężne aplikacje. To czy jest toporny zostawiam bardziej doświadczonym kolegom, ja nie narzekam
  • Odpowiedz
Cześć, moglibyście polecić jakiś fajny kurs #spring , który jest w miarę nowy i wartościowy (może być po angielsku) ?
Polecony mi został kurs Artura Owczarka https://www.youtube.com/playlist?list=PLU2dl_1LV_SQXD1_HHpKb-KRd4w1r6yzk
Jest tylko taki problem, że ten kurs jest z 2014 i opiera się na konfiguracji w XML (przynajmniej na początku), a już nawet STS 4 go chyba nie wspiera. No i wykopowi #programista15k pisali, że też się tego nie używa już
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@szalony_kefir: To jest w miarę dobre: Spring Framework 5: Beginner to Guru
https://www.udemy.com/share/10011mAEYScFZbTX4=/

Z minusów to typ ma słabą dykcję i nie robi za bardzo przerw ale bez problemu da się go zrozumieć.
Z plusów to ciągle aktualizuje kurs, więc jeśli w za jakiś czas wyjdzie spring 6, to zrobi update i będziesz mógł podejrzeć w nim co się zmieniło i nauczyć się nowych rzeczy..

EDIT: kurs ma prawie 50
  • Odpowiedz
Jak w springu najlepiej zabezpieczyć aplikacje webow'a aby każdy user mógł wykonywać tylko swoje akcje np. edytować/usuwać tylko swoje posty? Czy można do tego jakoś użyc spring security czy raczej nie?
#programowanie #java #spring
  • 14
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Problem z filtrami mam w springu.

Zdefiniowałem sobie filtr na ścieżkę /login, który służy do generowania tokenu. Wcześniej w HttpSecurity ustawiłem, że każdy może pod /login wykonać posta (w celu przesłania danych logowania). Tylko, że jak wysyłam posta to filtr się nie odpala, a jak geta to się odpala. O co chodzi xD

Kod

https://pastebin.com/Yvu8JYdZ
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Bruno_: @marcinkovvsky: Problem był w tym, że w configu HttpSecuirty nie był wyłączony csrf

http.csrf().diable().cors()
W przypadku restowego api nie ma to znaczenia, atak csrf działa w oparciu o przesyłane ciasteczka a ja tego nie robię i ogólnie w przypadku resta nie powinno się tego robić bo jest bezstanowy
  • Odpowiedz
#spring #java Jak poprawnie napisać własną metodę toString() ? odnosząc się do mojego pytania na stacku i odpowiedzi do niego , próbowałem coś w stylu " return this.getName()+"," this.Kolejnawartość" .
W skrócie, mam rekurencję w kodzie, toString klasy Animals nie może wyświetlić toString Tags i tak w kółko. Jakieś sugestie ?
  • 15
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@lukaszwasyl: To nie problem z toStringiem czy hashCodem, tylko problem z mapowaniem encji jakie masz. Nie tworzysz DTO i zwracasz sobie na front encję która ma bezpośrednio inną encję, która ma twoją encję. Infinite recursive loop.
3 wyjścia.
Jeśli wystawiałbyś restowe API to możesz użyć adnotacji @JsonManagedReference i @JsonBackReference, błąd nie wystąpi.
Możesz stworzyć poprawny model i używać DTO.
Możesz stworzyć relację unidirectional, w tym momencie ci
  • Odpowiedz