W Kafce normalnie sobie mapujecie eventy ObjectMapperem czy bawicie się w te propertisty Springowe? Ja próbowałem używać tych propertisów, ale przy więcej niż 1 evencie pojawiały się problemy
#programowanie #java #spring #kafka
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

✨️Szkolenie Live: Spring Boot i WebSockety w Akcji!✨️

WebSockety odgrywają kluczową rolę w komunikacji w czasie rzeczywistym, uzupełniając możliwości tradycyjnego protokołu HTTP. Podczas szkolenia:
✅ omówimy działanie i specyfikację protokołu WebSocket,
✅ przejdziemy przez proces tworzenia aplikacji czatu z wykorzystaniem Spring Boot 3,
✅ uruchomimy aplikację na serwerze, demonstrując jej działanie w praktyce.
SoftBull - ✨️Szkolenie Live: Spring Boot i WebSockety w Akcji!✨️

WebSockety odgrywaj...

źródło: websockety1200

Pobierz
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Jak w takiej metodzie zrobić logowanie? Popsuć ten zapis tzn. usunąć wyrażenie lambda itd., czy można tam w jakiś ładny sposób wcisnąć loggera?

Drugie pytanie jest takie - czy powinienem używać w logach ID bazodanowego? W encjach mam tak właściwie trzy unikalne pola, tj. email jako username, id bazodanowe i uuid. Czy np. taki zapis "Event with ID X updated by user with ID Y" jest poprawny? Jak poprawnie powinny takie logi
V.....y - Jak w takiej metodzie zrobić logowanie? Popsuć ten zapis tzn. usunąć wyraże...

źródło: logging

Pobierz
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Chciałbym zrobić logowanie w swoim API. Poniżej wrzucam fragment jednego z serwisów. Co tutaj można by logować w konsoli? Logowanie powinno się robić w metodach kontrolerów i metodach serwisów, czy tylko w metodach serwisów?

#java #spring
V.....y - Chciałbym zrobić logowanie w swoim API. Poniżej wrzucam fragment jednego z ...

źródło: logging

Pobierz
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Chyba już się trochę pogubiłem - uwierzytelnić możemy się za pomocą loginu i hasła, a jeśli chodzi o rodzaje autoryzacji to mogę powiedzieć, że jest autoryzacja bazująca na rolach, autoryzacja JWT i OAuth2, tak? Czy JWT i OAuth2 to uwierzytelnienie?

#java #spring
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@VirtualSlimShady: nie możesz być autoryzowany, jeśli się nie uwierzytelnisz.

Autoryzacja: uprawnienia do zasobu.
Uwierzytelnienie: potwierdzenie swojej tożsamości.

Jak mogę dać Ci dostęp do mojego porfela, jak nie wiem, kim jesteś? To, że podajesz się za mnie, nie wystarczy: udowodnij, pokaż dowód tożsamości (uwierzytelnij się). A później możemy pogadać o uprawnieniach,
  • Odpowiedz
@VirtualSlimShady: @draxgar:

Kluczową różnicą między uwierzytelnianiem a autoryzacją jest to, że uwierzytelnianie potwierdza tożsamość użytkownika (czy jesteś tym, za kogo się podajesz), podczas gdy autoryzacja kontroluje, co dany użytkownik ma prawo zrobić po tym, jak jego tożsamość została potwierdzona.

Terminologia może być
  • Odpowiedz
???? Zanurzyłem się w świecie ofert dla Java Developerów na jednym z największych job boardów w Polsce! ????

???? Krótkie spostrzeżenia z 24 sierpnia 2023:
Na całej mapie Polski, w jednym z największych job boardów było jedynie 312 ofert pracy dla Javowców:
Java Junior – 38 ofert
Java Mid - 90 ofert
SoftBull - ???? Zanurzyłem się w świecie ofert dla Java Developerów na jednym z najwi...
  • 19
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Mam 2 encje JPA w relacji one-to-many - Seat i Booking. Chciałbym pobrać Seat po id z Bookings ze statusem "ACTIVE'. Jeśli Booking nie miałby takich Seats to powinno zostać zwrócone Seat z pustą listą Bookings.

Takie query działa w konsoli do SQL:

select * from seats s left join bookings b on b.seat_id=s.id and b.status='ACTIVE' where s.id=1
Przerobiłem je na query do Spring Data JPA:
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Nofenak: Musisz najpewniej użyć podzapytania (piszę z palca więc na pewno nie pójdzie od razu). select * from seats s left join (select seatid from bookings b where and b.status='ACTIVE') as bo on bo.seatid=s.id where s.id=1
  • Odpowiedz
Chciałbym pobrać Screening (seans) z Seat (miejscem) i z Booking (rezerwacją) po bookingId. Screening ma relację one-to-many z Seat a Seat one-to-many z Booking (miejsce może mieć wiele rezerwacji, ale tylko jedna moża być aktywna, reszta musi być anulowana).
Napisałem taką metodę, ale dostaje MultipleBagFetchException:

@query("select s from booking_screening s join fetch s.seats se join fetch se.bookings b where b.id = :bookingId")
Optional<Screening> readByBookingId(@Param("bookingId") Long booking);

#java #spring
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Czytam długo o stateful vs stateless microservices i dalej nie czaję tematu i mam wrażenie, że każdy w google pisze co innego.

Jak mam koszyk w sklepie internetowym i dodaje produkty to mikroserwis, gdzie mamy endpoint /cart/addItem POST i zapisujemy w bazie koszyk jest stateless czy stateful? Bo teoretycznie w tym poscie wysyłamy id koszyka, które już wcześniej otrzymaliśmy z endpointa (więc kolejne requesty polegają na poprzednich) oraz produkty, a z drugiej
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

to użyj komendy docker compose up -d i wtedy uruchomią ci się te 2 kontenery. ale nadal będą to właśnie 2 osobne kontenery.
  • Odpowiedz
Jest sobie taka biblioteka sock.js, która jest często używana razem z stomp.js jak ktoś robi np. czat z wykorzystaniem websocketów. Mógłby mi ktoś wyjaśnić tak bardziej ludzkim językiem co ona daje? Z tego co jest napisane na githubie nic nie rozumiem.

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

  • 0
@Davidozz: ale sam stomp.js też to daje. Niektóre przykłady czatu, które można znaleźć w necie używają dodatkowo tej biblioteki i chodzi mi o to co ona daje, czego stomp.js nie daje.
  • Odpowiedz
@VirtualSlimShady: z tego co zrobumialem

sockjs jest to tka jakby polyfill ktory dziala na http kiedy nie ma opcji uzycia websocketow powiedzmy chcesz uzyc websocketow, czy to socket.io czy stomp ale dostajesz error, ze ws: jest blocked czy not supported bo jakis starszy browser czy cos czy jakis firewall wtedy robisz fallback na sockjs
  • Odpowiedz
Kurde, muszę się poradzić, bo chyba trochę się pogubiłem. Mam takie trzy metody jak na obrazku. Pierwsza zwraca profil użytkownika, jako argument przyjmuje użytkownika, który przychodzi z fasady. Jak widać, mapowanie i zwrot obiektu DTO. Zastanawiam się czy ten Optional ma tam sens. Wykorzystuję go w kontrolerze i dzięki temu zwracam status 200, albo 404.

Sama fasada o której wcześniej wspominałem wygląda tak, że jest w niej jedna metoda w której pobierany
V.....y - Kurde, muszę się poradzić, bo chyba trochę się pogubiłem. Mam takie trzy me...

źródło: kod

Pobierz
  • 12
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@draxgar: no to właśnie tak robię... wstrzykuję użytkownika i przepycham go przez wszystkie warstwy, przecież po to jest ta fasada. Tylko teraz przy API i JWT są dwa identyczne zapytania do tabeli użytkownika, pierwsze w filtrze i drugie w kontrolerze robi ta fasada i dlatego chcę to zoptymalizować żeby chociaż w obrębie jednego requestu nie było dwóch identycznych zapytań do bazy danych.
  • Odpowiedz
Nie korzystałem wcześniej z bazy mongo w springu i gdy próbuję aktualizować obiekt z inną wartością jakiegoś pola to obiekt jest aktualizowany. Ale mam przypadek, że będzie wiele requestów (eventów) z aktualizacją równocześnie więc dodałem pole version z adnotacją i dostaję cały czas exception przy repository.save:

Write operation error on server mongo-replica-set-0:27017. Write error: WriteError{code=11000, message='E11000 duplicate key error collection: blabla index: id dup key: { _id: "doc1" }


Moje klasy:

public
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@nick230: Nie znam się na Javie ale może ta kjak @Id mówi co jest kluczem tak samo @Version może oznaczac dla javowego clienta że pole version to także klucz i nie pozwala wrzucić obiektu z takim samym kluczem
  • Odpowiedz
Kiedy warto używać adnotacji z Lomboka, a kiedy lepiej odpuścić i napisać coś ręcznie? Tak się zastanawiam czy przy wstrzykiwaniu zależności do serwisów i kontrolerów konstruktor napisać ręcznie czy skorzystać z adnotacji @RequiredArgsConstructor. Czasami przy encjach czy obiektach DTO, np. jak dodaję adnotację @builder to wychodzi mi na koniec cały stos adnotacji i nie wiem czy jest to dobre.

Mam też pytanie co do samego buildera - kiedy warto
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Killeras: @VirtualSlimShady ja bym był ostrożny z tym używaniem buildera tylko po to, żeby mieć parametry nazwane. Jeśli istnieją domyślne wartości dla parametrów to builder jak najbardziej, w innym przypadku to moim zdaniem spore nadużycie. W przypadku konstruktora, jeśli nie przekażesz wszystkich parametrów, dostaniesz błąd w czasie kompilacji, w przypadku buildera (metody newBuilder()/build() bez parametrów) błąd dostaniesz dopiero w czasie działania programu. Oprócz tego w przypadku gołego buildera nie
  • Odpowiedz
Hej mirki, ma ktoś jakiś pomysł jak to najlepiej rozwiązać?
Mam klasy Dish oraz Product, obie klasy dziedziczą po klasie Food, generalnie jedyna różnica tych dwóch klas polega na tym, że Dish zawiera jeszcze listę produktów (dla uproszczenia załóżmy, że Product ma tylko nazwę, a Dish nazwę + listę produktów). Dodatkowo mam klasę Calendar, który zawiera datę oraz obiekt Food (czyli produkt lub danie). I potrzebuje z poziomu kalendarza dostać się do
  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

to dlaczego w Calendar nie przechowujesz obiektu klasy Dish, skoro potrzebujesz się dostać do jej metody? co chcesz konkretnie osiągnąć? po co ci ten Food wgl?
  • Odpowiedz
bo przecież takie jabłko też można zjeść, mimo, że nie posiada ono żadnych składników


@nerfipro174:
Przemyśl nazewnictwo, posiłek nazwałbym Meal

Natomiast do kalendarza można dodać zarówna dania jak i same produkt (bo przecież takie jabłko też można zjeść, mimo, że nie posiada ono
  • Odpowiedz
Gdzie w Spring Security w podstawowej konfiguracji uwierzytelniania dodawany jest header Authorization? Wpisujemy nazwę użytkownika i hasło w formularzu i później w filtrze BasicAuthenticationFilter jest wyciąganie tego headera. A chodzi mi o to kiedy i gdzie dane logowania są kodowane do Base64 i dodawane jako header?

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