Vous devriez en utilisant l'interception ressort aop tous les services Web, et exécuter le code commun sur it.Like code suivant:
<bean id="aspect" class="com.zhuyiren.Aspect"/>
<aop:config>
<aop:aspect ref="aspect">
<aop:before method="before" pointcut="execution(* com.zhuyiren.service..*.*(..))"/>
</aop:aspect>
</aop:config>
Ce code ci-dessus signifie que le Invoke chaque méthode de certains haricots emballés à com.zhuyiren.service
toujours exécuter la méthode common
dans com.zhuyiren.Aspect
.Vous pouvez écrire le code commun dans common
method.Like:
public void common(){
System.out.println("execute some common code");
}
le cas de test:
public static void main(String[] args) throws Exception {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("test.xml");
UserService service = context.getBean(UserService.class);
System.out.println(service.getUser(3));
}
L'impression est:
execute some common code
UserInfo{id=3, name='zhuyiren', password='123456', testString=[]}
Pouvez-vous définir "avant d'appeler des services Web? Voulez-vous dire une étape de configuration (initialisation d'un pool, chargement/préparation de ressources et de cartes, construction de tables de référence, etc.) ou voulez-vous dire quelque chose qui devrait être traité avant chaque appel au service? etc.)? – user2478398
Avez-vous essayé des codes ?! Pouvez-vous les poster pour un scénario plus clair ?! –
J'ai besoin de sauvegarder les informations de la requête, (navigateur, ip et version OS) J'ai besoin d'accéder à l'objet httpRequest pour le faire, au lieu de le faire manuellement avec chaque webservice, je demande si quelque chose est supporté par spring. –