在webapp中,我使用Spring AOP在来电时检查服务的授权,并在返回结果时管理消息(info、warn、error)。使用方面可以节省代码行并概括服务的行为(而且看起来很性感^^)。
所以我在应用程序上下文中有这种类型的conf
<aop:aspectj-autoproxy />
<bean id="authenticationCheckAspect" class="fr.test.server.business.aspect.AuthenticationCheckAspect" />
我的方面看起来是这样的:
package fr.test.server.business.aspect;
@Aspect
public class AuthenticationCheckAspect {
private static final Logger LOG = LoggerFactory.getLogger(AuthenticationCheckAspect.class);
@Autowired
private AuthenticationBiz authBiz;
/**
* methodAnnotatedWithMyService Pointcut
*/
@Pointcut("execution(@fr.test.server.business.aspect.MyService * *(..))")
public void methodAnnotatedWithMyService() {
// Méthode vide servant de Pointcut
}
@Before("methodAnnotatedWithMyService()")
public void checkAuthentication(final JoinPoint joinPoint) throws FunctionalException {
LOG.debug("checkAuthentication {}", joinPoint);
{process...}
}
@AfterReturning(pointcut = "methodAnnotatedWithMyService()", returning = "result")
public void manageErrors(final JoinPoint joinPoint, final Object result) {
LOG.debug("Returning {}", joinPoint);
}
}
在执行任何标记为@myservice
的方法之前,应该触发方法checkAuthentication()
,这是一种解脱。
你的代码看起来不错。我会建议加上
@AfterThrowing(pointcut = "methodAnnotatedWithMyService()", throwing="ex")
public void doRecoveryActions( Exception e) {
// Some code may be System.out.println
// or e.printStackTrace()
}
看看这是不是正在执行。
如果在pointcutMethodAnnotatedWithMyService()
中引发异常,则不会调用@afterreturn
。但是@after
将被调用..
摘自http://static.springsource.org/spring/docs/2.0.x/reference/aop.html
@Afterreturn通知在匹配的方法执行正常返回时运行
我创造了一个切入点。但它不起作用。请协助我下面的代码。http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop/spring-aop-3.0.xsd“> https://pastebin.com/qi0cjkjj
下面是我的代码片段: 服务我mpl.java 现在,我想要的是每当从方法worker(请求,字符串id)抛出null点异常时,我想要执行一些特定的任务,如上图所示。为此,我编写了一个方面类,如下所示: 我的方面。Java语言 电流输出: 期望输出: 如您所见,没有被触发,因此没有打印值。这是什么原因? 注: > 还尝试更改方法的名称,以消除任何也不起作用的重载问题。 到目前为止,尝试了各种其他切入
我编写了一组简单的类,向一位朋友演示如何为AOP(而不是xml配置)使用注释。我们无法使@ComponentScan工作,并且AnnotationConfigApplicationContext getBean的行为也不正常。我想明白两件事。请参阅下面的代码: PersonOperationSI.java PersonOperations.java PersonOperationsConfigCl
主要内容:语法,运行项目之后()是一种通知类型,可以确保在方法执行前运行通知。以下是之后()的通知语法: 语法 在上面配置中, - 切入点的id。 - 在调用函数之前调用的函数的方法名称。 要了解上述与之后通知(After Advice)相关的概念,写一个在实现之后通知(After Advice)的示例。为了简单,可直接复制之前上一篇文章中的例子,打开并使用Eclipse IDE,并按照以下步骤创建一个Spring应用程
我使用Spring AOP来实现我的应用程序的日志系统。但我有一些麻烦。 我有简单的课
在使用Spring AOP之前,我有一个这样的工作代码: 在哪里 在哪里 我的城市财产编辑自动接线工作正常。但是在为所有方法添加Spring AOP切入点之后: 城市地产编辑器的自动连接崩溃。事实上,bean不再属于CityProperty tyEditor类,而是简单地属性编辑器: 因此,我不得不将类从CityPropertyEditor更改为PropertyEditor,作为一种解决方法。有趣