• 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?

Cloud VPS
0 głosów
196 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ź 406 wizyt
0 głosów
1 odpowiedź 258 wizyt
pytanie zadane 7 października 2017 w Java przez Jonki Dyskutant (8,180 p.)
0 głosów
1 odpowiedź 492 wizyt
pytanie zadane 30 stycznia 2022 w Java przez Lulex Użytkownik (820 p.)

93,469 zapytań

142,404 odpowiedzi

322,716 komentarzy

62,852 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

Kursy INF.02 i INF.03
...