2009-02-26 4 views

Antwort

2

Ich denke nicht, dass dies eine gute Idee ist. Der Service-Layer sollte nicht wissen oder sich darum kümmern, ob es sich um einen HTTP-Client handelt oder nicht.

Statisch klingt auch nicht nach der richtigen Idee. HttpRequestContext sollte einer HttpRequest-Instanz und nicht einer bestimmten Klasse zugeordnet werden.

Ein besseres Design, meiner Meinung nach, würde holen, was auch immer der Service braucht, aus dem Kontext heraus und übergeben es. Keine Notwendigkeit für den Dienst mit HTTP oder der Web-Schicht gekoppelt werden.

+0

ausgezeichnete Antwort –

+10

Statt über schlechten Programmierstil beschweren, könnten Sie einfach die Frage beantworten? Ich meine, du kannst die Frage beantworten und dich dann über schlechten Stil beschweren, aber du antwortest überhaupt nicht. -1 –

+3

Dies ist eine Bildungsseite. Ich denke, es ist es wert, dass man es erfährt, wenn man auf dem falschen Weg ist. Du kannst widersprechen. Ich werde darauf hinweisen, dass die Person, die die Frage stellte, dies als Antwort akzeptierte. Du hast nichts Wertvolles gepostet, außer einem verschrobenen Kommentar. Wer war hier hilfreicher? – duffymo

26

Wenn Sie Frühling verwenden Sie können folgende tun:

public static HttpServletRequest getCurrentHttpRequest(){ 
    RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes(); 
    if (requestAttributes instanceof ServletRequestAttributes) { 
     HttpServletRequest request = ((ServletRequestAttributes)requestAttributes).getRequest(); 
     return request; 
    } 
    logger.debug("Not called in the context of an HTTP request"); 
    return null; 
} 
+0

binden Sie dies als eine Bohne? Wie funktioniert die Verwendung von "Autowired" hier anstelle einer statischen Methode? – sbs

+0

@sbs Hier https://Stackoverflow.com/a/36736964/5788341 – Binakot

Verwandte Themen