2009-02-26 20 views

risposta

2

Non penso sia una buona idea. Il livello di servizio non dovrebbe sapere o preoccuparsi se si tratta o meno di un client HTTP.

Anche statico non sembra l'idea giusta. HttpRequestContext dovrebbe essere associato a un'istanza HttpRequest, non a una particolare classe.

Un design migliore, a mio parere, recupera tutto ciò che il servizio richiede dal contesto e lo inoltra. Non è necessario che il servizio sia accoppiato a HTTP o al livello Web.

+0

eccellente risposta –

+10

Invece di lamentarsi cattivo stile di programmazione, si potrebbe semplicemente rispondere alla domanda? Voglio dire, puoi rispondere alla domanda e poi lamentarti del cattivo stile, ma non rispondi affatto. -1 –

+3

Questo è un sito educativo. Penso che sentirsi dire quando sei sulla strada sbagliata valga la pena conoscere. Sei libero di non essere d'accordo. Sottolineerò che la persona che ha posto la domanda ha accettato questo come risposta. Non hai postato nulla di valore tranne un commento irritabile. Chi è stato più utile qui? – duffymo

26

Se si utilizza la primavera è possibile effettuare le seguenti operazioni:

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

legalo come un fagiolo? Come usare 'autowired' fare qui, invece di un metodo statico? – sbs

+0

@sbs Guarda qui https://stackoverflow.com/a/36736964/5788341 – Binakot

Problemi correlati