【发布时间】:2020-06-19 11:58:45
【问题描述】:
我的 Spring Web 模型-视图-控制器 (MVC) 框架中有这个类。我正在使用面向方面的编程 (AOP),这是一种旨在通过允许分离横切关注点来增加模块化的编程范式。 这门课一切都很好
@Aspect
public class MarketingAspect extends ServiceSupport {
@Pointcut("execution(* com.tdk.iot.services.client.LicenseService.*(..))")
public void handleServiceMethod() {
}
@Pointcut("execution(* com.tdk.iot.services.client.ApplicantService.*(..))")
public void handleApplicantServiceMethod() {
}
@Before("com.tdk.iot.services.aop.ApplicantAspect.handleServiceMethod()")
public void before(JoinPoint _jp) {
User user = getLDAPUser();
if(user != null &&( (user.getUserRole() != UserRole.MARKETING)) {
throw new NoSufficientRoleException(user == null ? null : user.getUserRole(), UserRole.MARKETING);
}
}
@Before("com.tdk.iot.services.aop.ApplicantAspect.handleApplicantServiceMethod()")
public void checkRolebefore(JoinPoint _jp) {
User user = getLDAPUser();
if(user != null &&( (user.getUserRole() != UserRole.MARKETING))) {
throw new NoSufficientRoleException(user == null ? null : user.getUserRole(), UserRole.MARKETING);
}
}
}
我已经更改了getLDAPUser的方法表示法,现在接收HttpServletRequest请求作为参数,所以我将方法修改为
@Before("com.tdk.iot.services.aop.ApplicantAspect.handleApplicantServiceMethod()")
public void checkRolebefore(JoinPoint _jp, HttpServletRequest request) {
User user = getLDAPUser(request);
if(user != null &&( (user.getUserRole() != UserRole.MARKETING))) {
throw new NoSufficientRoleException(user == null ? null : user.getUserRole(), UserRole.MARKETING);
}
}
修改这个方法后我得到了这个错误
java.lang.IllegalArgumentException: error at ::0 formal unbound in pointcut
在我的 XML 中:
<!-- Scan for aspects -->
<aop:aspectj-autoproxy />
<bean id="marketingAspect" class="com.tdk.iot.services.aop.MarketingAspect" />
【问题讨论】:
-
你是否在你的配置xml文件中启用了spring aop?
注释 -
你能显示你的应用程序配置吗
-
当我修改方法时问题开始如下: public void checkRolebefore(JoinPoint _jp, HttpServletRequest request) {
-
你能把你用过这个注解的代码贴出来
标签: java spring spring-mvc aop