`

SSH学习记录(4)-AOP测试

阅读更多
1. 页面加入提交到logLogic方法的按钮

<form action="aopAction!logLogic.action" method="post">

	<input type="submit" value="Submit to aopAction!logLogic"/>

</form>

2. AOPAction中加入logLogic方法。Action和Logic 都复制一份2,测试aop。页面加入提交aopAction2的logLogic的按钮。
	public String logLogic(){

		logic.print();

		return SUCCESS;

	}


3. Logic 改为接口实现,便于使用Spring配置aop。

4. 配置好struts.xml和applicationContext.xml.

struts加入一个Action2
        <action name="aopAction2" class="aopAction2">

        </action>


spring也加入2

    <bean id="aopAction2" class="com.zhch.action.AOPAction2">

    	<property name="logic" ref="aopLogic2"/>

    </bean>

    <bean id="aopLogic2" class="com.zhch.logic.AOPLogicImpl2"/>


5. aop的内容:

  5.1 写接口的拦截器。

package com.zhch.interceptor;



import org.aopalliance.intercept.MethodInterceptor;

import org.aopalliance.intercept.MethodInvocation;



public class AOPInterceptor implements MethodInterceptor {  

      

    // invoke方法返回调用的结果  

    public Object invoke(MethodInvocation invocation) throws Throwable {  

        String methodName = invocation.getMethod().getName();  

        System.out.println("Before name:"+methodName);

        Object result = invocation.proceed();  

        System.out.println("After name:"+methodName);

        

        return result;

    }  

  

}


  5.2 applicationContext.xml中配置interceptor和aop代理。

  
 <!-- interceptor -->

    <bean id="aopInterceptor"  

        class="com.zhch.interceptor.AOPInterceptor">  

    </bean>

    <!-- ProxyBean -->

	<bean id="aopLogicProxy" class="org.springframework.aop.framework.ProxyFactoryBean">

		<property name="proxyInterfaces">  

            <value>com.zhch.logic.AOPLogic</value>  

        </property>  

        <property name="target" ref="aopLogic"/>

        <property name="interceptorNames">  

            <list>  

                <value>aopInterceptor</value>

            </list>  

        </property> 

	</bean>


  5.3 action中的logic引用代理。

    <bean id="aopAction" class="com.zhch.action.AOPAction">

    	<property name="logic" ref="aopLogicProxy"/>

    </bean>


6. 第二个Logic的配置方法也相同。

7. 如果有许多个Bean要代理的话,这样配置会很麻烦,可以用BeanNameAutoProxyCreator来自动代理。

8. 用BeanNameAutoProxyCreator代理。

  8.1 将原来的<!-- ProxyBean -->删除。

  8.2 配置BeanNameAutoProxyCreator。
	<bean  class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">

		<property name="beanNames">

			<list>

				<value>*Logic</value>

			</list>

		</property>

		<property name="interceptorNames">  

            <list>  

                <value>aopInterceptor</value>

            </list>  

        </property>

	</bean>


8.3 Action中还是引用原来的Logic的Bean的名字。

8.4 多个配置文件中的符合名字正则的都会被代理。



总结:

1. 用ProxyFactoryBean

   1.1 接口和它的实现类都有了,写好。

   1.2 写接口的拦截器

   1.3 在spring中配置拦截器和代理,别的类引用就好了。

2. 用BeanNameAutoProxyCreator

  2.1 接口和它的实现类都有了,写好。

   1.2 写接口的拦截器

   1.3 在spring中配置拦截器和代理,这里引用Bean还是引用原来的Bean就可以了,

   BeanNameAutoProxyCreator会自动代理符合它名字正则表达式的bean。

  

附加1. Spring多配置文件

在web.xml中加入context-param元素,给listener用。

用*表示多个,也可以直接写名字。
    <listener>

    	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

	</listener> 

	<context-param>

		<param-name>contextConfigLocation</param-name>

		<param-value>

			/WEB-INF/applicationContext.xml;

			/WEB-INF/applicationContext-*.xml

		</param-value>

	</context-param>




附加2. struts2多配置文件

方法1.

在struts.xml中加入下面的文字就可以解决了
	<include file="struts-default.xml">

	<include file="struts_001.xml">

	<include file="struts_002.xml">




如果是多级包含,主要的包含struts_001.xml,struts_001.xml包含struts_002.xml

则主要的里面是
<include file="struts_001.xml">


struts_001.xml里面是

<include file="struts_002.xml">


如果有多级目录则每一个包含都要写从class开始的全称目录

比如struts_001.xml,struts_002.xml都在com.zhch包中,主包含struts_001.xml,struts_001.xml包含struts_002.xml.

则主要里面是
<include file="com/zhch/struts_001.xml">


struts_001.xml里面是

<include file="com/zhch/struts_002.xml">

分享到:
评论
1 楼 lel08090 2008-11-03  
思路很明朗啊

相关推荐

    spring-aop.jar各个版本

    spring-aop-1.1.1.jar spring-aop-1.2.6.jar spring-aop-1.2.9.jar spring-aop-2.0.2.jar spring-aop-2.0.6.jar spring-aop-2.0.7.jar spring-aop-2.0.8.jar spring-aop-2.0.jar spring-aop-2.5.1.jar spring-aop-...

    开发工具 spring-aop-4.3.6.RELEASE

    开发工具 spring-aop-4.3.6.RELEASE开发工具 spring-aop-4.3.6.RELEASE开发工具 spring-aop-4.3.6.RELEASE开发工具 spring-aop-4.3.6.RELEASE开发工具 spring-aop-4.3.6.RELEASE开发工具 spring-aop-4.3.6.RELEASE...

    spring-aop-5.2.0.RELEASE-API文档-中文版.zip

    赠送jar包:spring-aop-5.2.0.RELEASE.jar; 赠送原API文档:spring-aop-5.2.0.RELEASE-javadoc.jar; 赠送源代码:spring-aop-5.2.0.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-aop-5.2.0.RELEASE.pom;...

    ssh-aop笔记

    ssh-aop笔记

    Spring5 框架 ---- AOP ---- 代码

    Spring5 框架 ---- AOP ---- 代码 Spring5 框架 ---- AOP ---- 代码 Spring5 框架 ---- AOP ---- 代码 Spring5 框架 ---- AOP ---- 代码 Spring5 框架 ---- AOP ---- 代码 Spring5 框架 ---- AOP ---- 代码 Spring5 ...

    spring-aop-5.0.8.RELEASE-API文档-中英对照版.zip

    赠送jar包:spring-aop-5.0.8.RELEASE.jar; 赠送原API文档:spring-aop-5.0.8.RELEASE-javadoc.jar; 赠送源代码:spring-aop-5.0.8.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-aop-5.0.8.RELEASE.pom;...

    spring-aop-5.3.10-API文档-中文版.zip

    赠送jar包:spring-aop-5.3.10.jar; 赠送原API文档:spring-aop-5.3.10-javadoc.jar; 赠送源代码:spring-aop-5.3.10-sources.jar; 赠送Maven依赖信息文件:spring-aop-5.3.10.pom; 包含翻译后的API文档:spring...

    spring-aop-5.3.12-API文档-中英对照版.zip

    赠送jar包:spring-aop-5.3.12.jar; 赠送原API文档:spring-aop-5.3.12-javadoc.jar; 赠送源代码:spring-aop-5.3.12-sources.jar; 赠送Maven依赖信息文件:spring-aop-5.3.12.pom; 包含翻译后的API文档:spring...

    spring-aop-5.0.10.RELEASE-API文档-中文版.zip

    赠送jar包:spring-aop-5.0.10.RELEASE.jar; 赠送原API文档:spring-aop-5.0.10.RELEASE-javadoc.jar; 赠送源代码:spring-aop-5.0.10.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-aop-5.0.10.RELEASE....

    spring-aop-3.2.5.RELEASE.jar ;spring-aop-3.2.5.jar

    spring-aop-3.2.5.RELEASE.jar

    spring-aop-jar

    aopalliance.jar、spring-aop-4.1.6.RELEASE.jar、spring-aspects-4.1.6.RELEASE.jar

    spring-aop-4.3.20.RELEASE-API文档-中英对照版.zip

    赠送jar包:spring-aop-4.3.20.RELEASE.jar 赠送原API文档:spring-aop-4.3.20.RELEASE-javadoc.jar 赠送源代码:spring-aop-4.3.20.RELEASE-sources.jar 包含翻译后的API文档:spring-aop-4.3.20.RELEASE-...

    spring-aop-5.1.3.RELEASE-API文档-中英对照版.zip

    赠送jar包:spring-aop-5.1.3.RELEASE.jar; 赠送原API文档:spring-aop-5.1.3.RELEASE-javadoc.jar; 赠送源代码:spring-aop-5.1.3.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-aop-5.1.3.RELEASE.pom;...

    spring-aop-4.0.4.RELEASE

    spring-aop-4.0.4.RELEASE 的jar包,亲测可用。。。。

    spring-aop-3.2.0.RELEASE.jar

    spring-aop-3.2.0.RELEASE.jar,一个Spring中AOP的jar包

    spring-aop-5.0.4.RELEASE.jar

    spring-aop-5.0.4.RELEASE.jar。

    spring-aop-5.0.1.RELEASE.jar

    spring-aop-5.0.1.RELEASE.jar

    spring-aop.jar

    spring-aop.jarspring-aop.jarspring-aop.jarspring-aop.jarspring-aop.jarspring-aop.jarspring-aop.jarspring-aop.jarspring-aop.jarspring-aop.jar

    SSH笔记-AOP

    SSH笔记-包含使用动态代理的方法解决代码混乱、分散问题+基于注解方式配置AOP通知+用基于 XML 的配置声明切面

Global site tag (gtag.js) - Google Analytics