XML文件配置:
<?xml version="1.0" encoding="UTF-8"?>
<!--http://www.springframework.org/dtd/-->
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="authManager" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager"/>
</property>
<property name="target">
<ref local="authManagerTargetIntercepted"/>
</property>
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
<bean id="authManagerTargetIntercepted" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="interceptorNames">
<list>
<value>sheetAuthManagerInterceptor</value>
<value>authManagerTarget</value>
</list>
</property>
</bean>
<bean id="authManagerTarget" class="com.dd.ee.security.hibernate.HibernateAuthManager">
<property name="hibernateTemplate">
<ref bean="hibernateTemplate"/>
</property>
</bean>
<bean id="sheetAuthManagerInterceptor" class="com.dd.ff.sheet.security.SheetAuthManagerInterceptor">
<property name="codeManager">
<ref bean="codeManager"/>
</property>
</bean>
</beans>
=======================================================================
MethodInterceptor代码
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
public class tAuthManagerInterceptor implements MethodInterceptor{
private final static String INTERCEPT_METHOD1 = "getAuthToken";
private final static String INTERCEPT_EXTERNAL_METHOD1 = "getExternalAuthToken";
private CodeManager codeManager;
/**
* @return Returns the codeManager.
*/
public CodeManager getCodeManager() {
return codeManager;
}
/**
* @param codeManager The codeManager to set.
*/
public void setCodeManager(CodeManager codeManager) {
this.codeManager = codeManager;
}
/* (non-Javadoc)
* @see org.aopalliance.intercept.MethodInterceptor#invoke(org.aopalliance.intercept.MethodInvocation)
*/
public Object invoke(MethodInvocation methodInvocation) throws Throwable {
Object retVal = methodInvocation.proceed();
String methodName = methodInvocation.getMethod().getName();
try {
if (INTERCEPT_METHOD1.equals(methodName)||INTERCEPT_EXTERNAL_METHOD1.equals(methodName)) {
process_buildAuthToken(methodInvocation, (AuthToken) retVal);
}
} catch (Exception e) {
logger.warn("[w] not set AuthToken attribute flowDept. caused: " + e.getMessage());
}
return retVal;
}
private void process_buildAuthToken(MethodInvocation methodInvocation, AuthToken authToken) throws Throwable {
List deptAncestors = (List) authToken.getAttribute("deptAncestors");
String flowDept = getFlowStartDept(deptAncestors);
if (flowDept != null&&(!"AHA".equals(flowDept))){
自己要做的事情
}
}
}
=======================================================
应用代码
AuthManager authManager = (AuthManager) getBean(AuthManager.BEAN_ID);
AuthToken authToken = authManager.getAuthToken(userCode, password);
==============
附件JAR
分享到:
相关推荐
在Java应用中,aopalliance.jar包扮演着至关重要的角色,它包含了一些核心接口,如`org.aopalliance.intercept.MethodInterceptor`和`org.aopalliance.aop.Advice`,这些接口定义了拦截器和通知的概念,它们是AOP的...
AOP Alliance的核心接口包括`org.aopalliance.intercept.MethodInterceptor`和`org.aopalliance.intercept.Interceptor`。`MethodInterceptor`接口定义了一个拦截方法调用的标准,它通过`invoke(MethodInvocation)`...
五、实际应用示例 在Spring配置中,我们可以通过`<aop:config>`标签来定义切面,然后使用`<aop:advisor>`或`<aop:aspect>`来指定拦截器。例如: ```xml <aop:config> <aop:aspect id="loggingAspect" ref=...
`com.springsource.org.aopalliance`库提供了两个主要的接口:`org.aopalliance.intercept.MethodInterceptor`和`org.aopalliance.intercept.Interceptor`,它们定义了拦截器的行为,使得不同的AOP实现可以互相协作...
AOP Alliance的核心在于它的简单性,它仅定义了一些基本的接口,如`org.aopalliance.intercept.MethodInterceptor`和`org.aopalliance.intercept.MethodInvocation`,这些接口是大多数AOP框架共有的基础。...
对于AOPAlliance,javadoc详细阐述了各个接口和类的功能、用法和注意事项,是理解AOPAlliance工作原理和实际应用的关键。 五、实践应用 使用AOPAlliance,开发者可以在Spring 2.0中定义自己的拦截器或通知,实现...
它定义了一些基本的切面和通知接口,如`org.aopalliance.aop.Aspect`和`org.aopalliance.intercept.MethodInterceptor`,这些接口被多个AOP框架广泛采用,包括AspectJ。 在实际应用中,这四个库常常一起使用,以...
AOP Alliance提供了一个简单的接口集,包括`org.aopalliance.intercept.MethodInterceptor`和`org.aopalliance.intercept.MethodInvocation`等,它们是AOP框架之间互操作性的基础。Spring AOP和其他AOP实现如AspectJ...
- **`org.aopalliance.aspectj.Pointcut`**:与 `org.aopalliance.intercept.Pointcut` 类似,但提供了更多的灵活性来指定切入点。 #### 五、AOP Alliance 在实际项目中的应用案例 - **日志记录**:通过定义一个...
`aopalliance.jar`是AOP联盟提供的一个接口库,它定义了一些通用的AOP接口,如`org.aopalliance.intercept.MethodInterceptor`和`org.aopalliance.aop.Advice`。这些接口使得不同AOP框架(如Spring AOP和AspectJ)...
在实际应用中,"aopalliance-1.0.rar"包含的"aopalliance-1.0.jar"文件是项目构建的重要组成部分。在Maven或Gradle等构建工具中,将这个jar文件添加到项目的依赖管理中,可以轻松地引入AOP Alliance的API,从而实现...
在实际应用中,`aopalliance-1.0.jar`和`aspectjweaver.jar`常被用于Spring框架中,因为Spring支持AOP Alliance的接口,同时也支持AspectJ作为其AOP实现。这样,我们可以在Spring配置中定义切面,并利用AspectJ ...
在实际应用中,`MethodInterceptor`通常与`org.springframework.aop.framework.ProxyFactoryBean`或`org.aspectj.lang.ProceedingJoinPoint`等具体实现结合使用。`ProxyFactoryBean`是Spring AOP中的一个关键组件,...
最后,`aopalliance-1.0.0.jar`是AOP联盟提供的一个接口库,它定义了一些通用的AOP接口,比如`org.aopalliance.intercept.MethodInterceptor`和`org.aopalliance.intercept.MethodInvocation`,使得不同的AOP框架...
1. `org.aopalliance.intercept.MethodInterceptor`: 这个接口定义了方法拦截器的规范,它是AOP中最常见的通知类型。方法拦截器可以在方法调用前后插入自定义的行为,如性能监控、事务管理等。通过实现`invoke...
在aopalliance-1.0.jar中,最重要的接口有两个:org.aopalliance.intercept.MethodInterceptor 和 org.aopalliance.aop.Advice。这两个接口是AOP Alliance的基础,它们定义了AOP的核心概念。 1. `MethodInterceptor...
在实际应用中,Spring框架经常与AspectJ结合使用,通过`aopalliance`库作为中间层,确保Spring的AOP功能和AspectJ的编织能力可以协同工作。例如,Spring的代理模式可以利用`aopalliance`接口来创建拦截器,而AspectJ...
aopalliance1.0是AOP Alliance的早期版本,它定义了一些基本的接口,如`org.aopalliance.intercept.MethodInterceptor`和`org.aopalliance.intercept.MethodInvocation`,这些接口是拦截器模式的核心,允许在方法...
这个库提供了一个公共API,比如`org.aopalliance.intercept.MethodInterceptor`接口,它是所有拦截器(interceptors)的基类,使得不同的AOP框架如Spring AOP和AspectJ可以在同一项目中协同工作。 使用这三个库,...
AOP Alliance主要定义了两个核心接口:`org.aopalliance.intercept.MethodInterceptor`和`org.aopalliance.intercept.Interceptor`。`MethodInterceptor`接口是AOP Alliance中处理方法拦截的关键,它定义了一个`...