我使用spring实现了一些休息网络服务。 我有一些常见的代码,我需要在每个Web服务之前执行。 我明确地在每个Web服务的开头都明确地调用这个公共代码。
有没有办法让春天"自动"在调用Web服务之前调用此公共代码?
答案 0 :(得分:0)
您应该使用spring aop拦截每个Web服务,并在其上执行公共代码。如下代码所示:
<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>
上面的代码意味着调用com.zhuyiren.service
打包的某个bean的每个方法总是执行common
中的方法com.zhuyiren.Aspect
。你可以用common
方法编写公共代码。像:
public void common(){
System.out.println("execute some common code");
}
测试用例:
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));
}
印刷品是:
execute some common code
UserInfo{id=3, name='zhuyiren', password='123456', testString=[]}
答案 1 :(得分:0)
看看HandlerInterceptorAdapter 您可以扩展它并从请求中提取您需要的任何信息
最佳
答案 2 :(得分:0)
答案取决于您要执行的代码。
一种技术是使用AOP(如@dabaicai答案中所述)。
另一种技术是添加JEE过滤器以在请求进入处理程序方法之前处理该请求。
以下是一些链接:
另一种选择:google搜索“spring jee filter”