2010-09-05 5 views
1

Quelle option est meilleure?Source de message autowiring de printemps par rapport à l'implémentation de l'interface MessageSourceAware?

J'ai un intercepteur PermissionInterceptor qui doit accéder à la source du message. Pour autant que je sache, cela peut être fait en autotransformant la source du message ou en implémentant l'interface MessageSourceAware comme suit.

public class PermissionInterceptor extends HandlerInterceptorAdapter { 
    private MessageSource messageSource; 

    @Autowired 
    public void setMessageSource(MessageSource messageSource) { 
    this.messageSource = messageSource; 
    } 
} 

ou

public class PermissionInterceptor extends HandlerInterceptorAdapter implements MessageSourceAware { 
    private MessageSource messageSource; 

    public void setMessageSource(MessageSource messageSource) { 
    this.messageSource = messageSource; 
    } 
} 

Quelle option est meilleure? Des avantages et des inconvénients?

Répondre

5

Il n'y a pas de gros avantages/inconvénients. Généralement, c'est juste une question de préférence du codeur. Je dirais que si vous allez utiliser @Autowired alors mettez l'annotation du champ et déposez la méthode. Cela le rend un peu plus concis, ce qui est pour moi le bénéfice des annotations.

public class PermissionInterceptor extends HandlerInterceptorAdapter { 

    @Autowired 
    private MessageSource messageSource; 

    ... 
} 

Cela peut également dépendre de l'utilisation des annotations plutôt que des liaisons XML dans le reste de la configuration de votre application. Si vous n'utilisez pas les annotations ailleurs, j'éviterais probablement de le faire dans ce cas pour des raisons de cohérence.

+1

+1 'MessageSourceAware' était la seule option avant le printemps 2.5, mais' @ Autowired' le rend un peu plus agréable. – skaffman

Questions connexes