我正在尝试使用Spring AOP在数据库表上应用过滤器。我希望此过滤器仅适用于此表。我已经配置了一个Aspect来应用过滤器,但我必须配置错误。
似乎永远不会执行连接点功能。我希望它从休眠的SessionFactory.getCurrentSession()中检索一个会话,并对它应用一个过滤器。
我的方面课程:
@Aspect
@Component
public class MyAspect {
@Pointcut("execution(* org.hibernate.SessionFactory.getCurrentSession(..))")
protected void hibernateSessionFetch() {
}
@AfterReturning(pointcut = "hibernateSessionFetch()", returning = "result")
public void enableFilter(JoinPoint joinPoint, Object result) {
System.out.println("*********** ASPECT ************");
Session session = (Session) result;
User u = new User("John Smith", 20);
// apply the filter
Filter filter = session.enableFilter("restrictToUser");
filter.setParameter("name", u.getName());
}
我的目标班级:
@Entity
@Table(name = "USER")
@org.hibernate.annotations.DynamicInsert
@org.hibernate.annotations.Filter(
name = "restrictToUser",
condition="name = :name"
)
@Component
public class User extends com.system.admin.SkeletonDTO<User>
implements java.io.Serializable {
// user information
}
在XML中我的配置如下:
<context:annotation-config></context:annotation-config>
<aop:aspectj-autoproxy proxy-target-class="true"/>
有谁知道我做错了什么?