main 方法调用是调用的是代理类
public static void main(String[] args)
{ ApplicationContext context=new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
ILogin login=(ILogin)context.getBean("helloProxy");
login.方法();
}
必须调用代理类,因为代理类加入了前置通知!
public static void main(String[] args)
{ ApplicationContext context=new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
ILogin login=(ILogin)context.getBean("helloProxy");
login.方法();
}
必须调用代理类,因为代理类加入了前置通知!
解决方案 »
- SSH集成删除对象级联错误
- 关于Spring2.0的SecurityContextHolder的问题
- 各位大哥,问大家一个关于action的一个小问题
- java 服务器数据库存的图片地址。客户端怎么读取
- struts2 <s:if>传值比较的问题o(╯□╰)oo(╯□╰)oo(╯□╰)oo(╯□╰)oo(╯□╰)oo(╯□╰)oo(╯□╰)oo(╯□╰)o
- 有难度问题!高手进! struts中怎么通过HttpServlet得到struts-config.xml中配置的数据源?
- 类似华容道的多数码问题,哪位大虾能帮忙?100分+XX,在线等待~~
- 数据库连接失败错误征集!
- 代我妹妹向各位过来人请教:如何学习java及是否必要学习XML,理由呢?
- Weblogic连接池的问题
- [Struts1.x]在ActionForm中使用JavaBean的话,怎么用Validator框架验证?
- 初学者的疑问:struts 2.0 和 struts 1.3.8 到底学哪个?
版主真情回复:
部分的代码内容没有说明清楚,以上的项目采用的是SSH(Struts2+Spring+Hibernate)框架,ILogin该接口是由Action实现的!
该action的代码如下:public class CustomerAction extends ActionSupport implements ILogin{
//CustomerAction里面的public String findCustomer()方法需要进行用户登录判断,这个方法写在AOP接口里了。//调用AOP接口,实现登陆判断
public void aopInterface() {
CheckLogin bb = new CheckLogin();
bb.islogin();}
}
applicationContext.xml里面的<ref local="customerAction"/> 指的就是这个ACTION
正解,调用代理类 >>
http://topic.csdn.net/u/20090103/12/ea64b467-75f0-4dc1-b3a1-140bb5147c7a.html
如果验证登录的话,无需到spring层面,直接用struts2的拦截器即可,请看这里给你的回复http://topic.csdn.net/u/20090103/12/ea64b467-75f0-4dc1-b3a1-140bb5147c7a.html
applicationContext.xml <?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"><bean id="word" class="com.east.spring.aop.methodmid.Worker"/>
<!-- 閰嶅埗鍒囬潰-->
<bean id="proxy" class="com.east.spring.aop.methodmid.MethodMidProxy"/>
<bean id="before" class="com.east.spring.aop.methodmid.BeforeProxy"/>
<bean id="after" class="com.east.spring.aop.methodmid.AfterProxy"/>
<!-- 閰嶇疆浠g悊绫?-->
<bean id="springProxy" class="org.springframework.aop.framework.ProxyFactoryBean">
<!-- 鎺ュ彛 -->
<property name="interfaces">
<value>com.east.spring.aop.methodmid.IWork</value>
</property>
<!-- 鐪熷疄鐨勪唬鐞嗙殑绫?-->
<property name="target" ref="word"></property>
<!-- 閰嶇疆鍒囬潰 -->
<property name="interceptorNames">
<list>
<value>proxy</value>
<value>before</value>
<value>after</value>
</list>
</property>
</bean>
</beans>
---------------------------------------------------
package com.east.spring.aop.methodmid;public interface IWork {
public void doWork();
}
---------------------------------------------------
package com.east.spring.aop.methodmid;public class Worker implements IWork {
public void doWork() {
try{
Thread.sleep(1000);
}catch(Exception se){
se.printStackTrace();
}
System.out.println(" this is Worker");
}}
----------------------------------------------------
package com.east.spring.aop.methodmid;import java.lang.reflect.Method;import org.springframework.aop.MethodBeforeAdvice;/**
* 在方法调用这前调用其它的方法
* @author Administrator
*
*/
public class BeforeProxy implements MethodBeforeAdvice{ public void before(Method method, Object[] value, Object target)
throws Throwable {
System.out.println("在方法调用这前调用其它的方法");
Object result = method.invoke(target, value);
}
}
-----------------------------------
package com.east.spring.aop.methodmid;import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestAop {
public static void main(String[] args) {
BeanFactory bf = new ClassPathXmlApplicationContext("applicationContext.xml");
//springProxy是代理对像的ID
IWork work = (IWork)bf.getBean("springProxy");
work.doWork();
}
}
--------------