• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Spring - czy używanie serwisu w innym serwisie to prawdidłowy sposób?

Object Storage Arubacloud
0 głosów
148 wizyt
pytanie zadane 16 lipca 2017 w Java przez Jonki Dyskutant (8,180 p.)

Posiadam przykładowe dwa serwisy

private AuthorizationService authorizationService;
private SecurityService securityService;

których używam do procesu logowania(tworzenie ciasteczek itd.). Kontroler, który za to odpowiada to

@GetMapping("/signInSuccessfully")
    public ModelAndView signInSuccessfully(HttpServletRequest request) {
        if(authorizationService.isLoginProcess(request)) {
            authorizationService.login();
        }

        return new ModelAndView("redirect:/");
    }

który wykorzystuje jeden z powyższych serwisów.

Natomiast w serwisie 

AuthorizationService

niektóre metody korzystają z innego serwisu

@Service
public class AuthorizationServiceImpl implements AuthorizationService {

    private SecurityService securityService;

    @Autowired
    public AuthorizationServiceImpl(SecurityService service) {
        this.securityService = service;
    }

    @Override
    public boolean isLoginProcess(HttpServletRequest request) {
        return true;
    }

    @Override
    public boolean login() {
        String username = securityService.getUsername();

        System.out.println(username);

        return false;
    }
}

i tu pojawia się ten mój problem. Czy jest to prawidłowy sposób na używanie serwisu, czy może nie powinienem zawiązywać innych serwisów w serwisie, a przekazywać tylko bezpośrednio z kontrolera parametry do metody, czyli np. zmiana kontrolera na

@GetMapping("/signInSuccessfully")
    public ModelAndView signInSuccessfully(HttpServletRequest request) {
        if(authorizationService.isLoginProcess(request)) {
            authorizationService.login(securityService.getUsername());
        }

        return new ModelAndView("redirect:/");
    }

i

@Service
public class AuthorizationServiceImpl implements AuthorizationService {

    @Override
    public boolean isLoginProcess(HttpServletRequest request) {
        return true;
    }

    @Override
    public boolean login(String username) {
        System.out.println(username);

        return false;
    }
}

Wtedy w serwisie nie ma żadnego innego serwisu i jest zachowana zasada SOLID. Jak uważacie?

1 odpowiedź

0 głosów
odpowiedź 20 lipca 2017 przez Mar Cin Dyskutant (8,900 p.)
Tak, używanie serwisu w innym serwisie jest prawidłowym zachowaniem. Czasami jeden serwis, potrzebuję jakiejś "logiki" drugiego :)

Podobne pytania

0 głosów
1 odpowiedź 254 wizyt
0 głosów
1 odpowiedź 207 wizyt
pytanie zadane 7 października 2017 w Java przez Jonki Dyskutant (8,180 p.)
0 głosów
1 odpowiedź 288 wizyt
pytanie zadane 30 stycznia 2022 w Java przez Lulex Użytkownik (820 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...