- 浏览: 37934 次
- 性别:
- 来自: 大连
最新评论
-
liwei113114:
servlet后面的BARCODE_TYPE参数传错了,参数名 ...
(转)用java生成条形码,barcode4j得应用 -
Smart_chw:
<div class="quote_title ...
(转)Struts2调用流程 -
lishijia:
看起来确实费劲。。。
(转)Struts2调用流程 -
JArcher:
建议图文结合。。。
(转)Struts2调用流程 -
free_zk:
实在是没有办法看了
(转)Struts2调用流程
经过这段日子的学习和使用Spring,慢慢地体会到Spring的优妙之处,正在深入地吸收Spring的精华,
呵呵。现在写的这个只是个简单AOP例子,包括前置通知,后置通知,环绕通知,和目标对象。写这个例子的主要目标只是想让想学AOP的能更快地入门,了解
一下如何去配置AOP里面的东东。
目标对象的接口:IStudent.java
1
/**
2 *
3 */
4 package com.dragon.study;
5
6 /**
7 * @author dragon
8 *
9 */
10 public interface IStudent {
11
12 public void addStudent(String name);
13 }
14
2 *
3 */
4 package com.dragon.study;
5
6 /**
7 * @author dragon
8 *
9 */
10 public interface IStudent {
11
12 public void addStudent(String name);
13 }
14
目标类:StudentImpl.java
1
/**
2 *
3 */
4 package com.dragon.study.Impl;
5
6 import com.dragon.study.IStudent;
7
8 /**
9 * @author dragon
10 *
11 */
12 public class StudentImpl implements IStudent {
13
14 public void addStudent(String name) {
15 System.out.println( " 欢迎 " + name + " 你加入Spring家庭! " );
16 }
17 }
18
2 *
3 */
4 package com.dragon.study.Impl;
5
6 import com.dragon.study.IStudent;
7
8 /**
9 * @author dragon
10 *
11 */
12 public class StudentImpl implements IStudent {
13
14 public void addStudent(String name) {
15 System.out.println( " 欢迎 " + name + " 你加入Spring家庭! " );
16 }
17 }
18
前置通知:BeforeAdvice.java
1
/**
2 *
3 */
4 package com.dragon.Advice;
5
6 import java.lang.reflect.Method;
7
8 import org.springframework.aop.MethodBeforeAdvice;
9
10 /**
11 * @author dragon
12 *
13 */
14 public class BeforeAdvice implements MethodBeforeAdvice {
15
16 public void before(Method method,Object[] args, Object target)
17 throws Throwable {
18
19 System.out.println( " 这是BeforeAdvice类的before方法. " );
20
21 }
22 }
23
2 *
3 */
4 package com.dragon.Advice;
5
6 import java.lang.reflect.Method;
7
8 import org.springframework.aop.MethodBeforeAdvice;
9
10 /**
11 * @author dragon
12 *
13 */
14 public class BeforeAdvice implements MethodBeforeAdvice {
15
16 public void before(Method method,Object[] args, Object target)
17 throws Throwable {
18
19 System.out.println( " 这是BeforeAdvice类的before方法. " );
20
21 }
22 }
23
后置通知:AfterAdvice.java
1
/**
2 *
3 */
4 package com.dragon.Advice;
5
6 import java.lang.reflect.Method;
7
8 import org.springframework.aop.AfterReturningAdvice;
9
10 /**
11 * @author dragon
12 *
13 */
14 public class AfterAdvice implements AfterReturningAdvice {
15
16 public void afterReturning(Object returnValue ,Method method,
17 Object[] args,Object target) throws Throwable {
18 System.out.println( " 这是AfterAdvice类的afterReturning方法. " );
19 }
20
21
22 }
23
2 *
3 */
4 package com.dragon.Advice;
5
6 import java.lang.reflect.Method;
7
8 import org.springframework.aop.AfterReturningAdvice;
9
10 /**
11 * @author dragon
12 *
13 */
14 public class AfterAdvice implements AfterReturningAdvice {
15
16 public void afterReturning(Object returnValue ,Method method,
17 Object[] args,Object target) throws Throwable {
18 System.out.println( " 这是AfterAdvice类的afterReturning方法. " );
19 }
20
21
22 }
23
环绕通知:CompareInterceptor.java
1
/**
2 *
3 */
4 package com.dragon.Advice;
5
6 import org.aopalliance.intercept.MethodInterceptor;
7 import org.aopalliance.intercept.MethodInvocation;
8
9
10 /**
11 * @author dragon
12 *
13 */
14 public class CompareInterceptor implements MethodInterceptor {
15
16 public Object invoke(MethodInvocation invocation) throws Throwable {
17 Object result = null ;
18 String stu_name = invocation.getArguments()[ 0 ].toString();
19 if ( stu_name.equals( " dragon " )) {
20 // 如果学生是dragon时,执行目标方法,
21 result = invocation.proceed();
22
23 } else {
24 System.out.println( " 此学生是 " + stu_name + " 而不是dragon,不批准其加入. " );
25 }
26
27 return result;
28 }
29 }
30
2 *
3 */
4 package com.dragon.Advice;
5
6 import org.aopalliance.intercept.MethodInterceptor;
7 import org.aopalliance.intercept.MethodInvocation;
8
9
10 /**
11 * @author dragon
12 *
13 */
14 public class CompareInterceptor implements MethodInterceptor {
15
16 public Object invoke(MethodInvocation invocation) throws Throwable {
17 Object result = null ;
18 String stu_name = invocation.getArguments()[ 0 ].toString();
19 if ( stu_name.equals( " dragon " )) {
20 // 如果学生是dragon时,执行目标方法,
21 result = invocation.proceed();
22
23 } else {
24 System.out.println( " 此学生是 " + stu_name + " 而不是dragon,不批准其加入. " );
25 }
26
27 return result;
28 }
29 }
30
配置文件applicationContext.xml
1
<?
xml version="1.0" encoding="UTF-8"
?>
2 <! DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" >
3
4 < beans >
5
6 < bean id ="beforeAdvice" class ="com.dragon.Advice.BeforeAdvice" ></ bean >
7 < bean id ="afterAdvice" class ="com.dragon.Advice.AfterAdvice" ></ bean >
8 < bean id ="compareInterceptor" class ="com.dragon.Advice.CompareInterceptor" ></ bean >
9 < bean id ="studenttarget" class ="com.dragon.study.Impl.StudentImpl" ></ bean >
10
11 < bean id ="student" class ="org.springframework.aop.framework.ProxyFactoryBean" >
12 < property name ="proxyInterfaces" >
13 < value > com.dragon.study.IStudent </ value >
14 </ property >
15 < property name ="interceptorNames" >
16 < list >
17 < value > beforeAdvice </ value >
18 < value > afterAdvice </ value >
19 < value > compareInterceptor </ value >
20 </ list >
21 </ property >
22 < property name ="target" >
23 < ref bean ="studenttarget" />
24 </ property >
25
26 </ bean >
27
28
29
30
31 </ beans >
2 <! DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd" >
3
4 < beans >
5
6 < bean id ="beforeAdvice" class ="com.dragon.Advice.BeforeAdvice" ></ bean >
7 < bean id ="afterAdvice" class ="com.dragon.Advice.AfterAdvice" ></ bean >
8 < bean id ="compareInterceptor" class ="com.dragon.Advice.CompareInterceptor" ></ bean >
9 < bean id ="studenttarget" class ="com.dragon.study.Impl.StudentImpl" ></ bean >
10
11 < bean id ="student" class ="org.springframework.aop.framework.ProxyFactoryBean" >
12 < property name ="proxyInterfaces" >
13 < value > com.dragon.study.IStudent </ value >
14 </ property >
15 < property name ="interceptorNames" >
16 < list >
17 < value > beforeAdvice </ value >
18 < value > afterAdvice </ value >
19 < value > compareInterceptor </ value >
20 </ list >
21 </ property >
22 < property name ="target" >
23 < ref bean ="studenttarget" />
24 </ property >
25
26 </ bean >
27
28
29
30
31 </ beans >
现在开始写测试类,Test.java
1
/**
2 *
3 */
4 package com;
5
6 import org.springframework.context.ApplicationContext;
7 import org.springframework.context.support.FileSystemXmlApplicationContext;
8
9 import com.dragon.study.IStudent;
10
11 /**
12 * @author dragon
13 *
14 */
15 public class Test {
16
17 /**
18 * @param args
19 */
20 public static void main(String[] args) {
21 // TODO Auto-generated method stub
22 ApplicationContext ctx =
23 new FileSystemXmlApplicationContext( " /com/dragon/applicationContext.xml " );
24
25 IStudent person = (IStudent)ctx.getBean( " student " );
26 person.addStudent( " dragon " );
27
28 // person.addStudent("javadragon");
29 }
30
31 }
32
2 *
3 */
4 package com;
5
6 import org.springframework.context.ApplicationContext;
7 import org.springframework.context.support.FileSystemXmlApplicationContext;
8
9 import com.dragon.study.IStudent;
10
11 /**
12 * @author dragon
13 *
14 */
15 public class Test {
16
17 /**
18 * @param args
19 */
20 public static void main(String[] args) {
21 // TODO Auto-generated method stub
22 ApplicationContext ctx =
23 new FileSystemXmlApplicationContext( " /com/dragon/applicationContext.xml " );
24
25 IStudent person = (IStudent)ctx.getBean( " student " );
26 person.addStudent( " dragon " );
27
28 // person.addStudent("javadragon");
29 }
30
31 }
32
发表评论
-
POI读取EXCEL进行sheet复制
2011-08-10 12:10 2741/****************************** ... -
POI设置EXCEL单元格格式为文本、小数、百分比、货币、日期、科学计数法和中文大写
2011-04-28 15:55 1305再读本篇文章之前,请先看我的前一篇文章,前一篇文章中有重点 ... -
(转)ArrayList实现
2011-02-19 08:34 787ArrayList是List接口的一个可变长数组实现。实现 ... -
(转)iReport与JasperReport简介
2011-01-31 08:45 1320一、iReport与JasperReport简介 ... -
(转)用java生成条形码,barcode4j得应用
2011-01-26 09:54 2783最近一个oa系统用到了 ... -
(转)条形码barcode4j的使用
2011-01-26 09:51 928 -
如何成功制作可执行的Jar包
2010-12-19 12:23 783今天试了一下制作可执行的Jar文件的方法。 具体如下: 首 ... -
bat运行jar文件
2010-12-19 09:07 1597set JAVA_HOME=D:\Users\Java\jdk ... -
(转)JAR文件包及jar命令详解
2010-12-19 07:39 826常常在网上看到 ... -
(转)在java程序中如何知道数据库表的主键
2010-12-11 07:59 1431有同事问到在程序中怎样知道数据库表中那 ... -
(转)浅谈JDBC事务和JTA (XA)事务
2010-11-10 09:46 1124事务简介 一般情 ... -
Java, 面试题, Spring
2010-11-05 14:36 1312Java, 面试题, Spring 113. 什么是aop,a ... -
JSP 抛出一些URI异常的解决方法
2010-05-31 10:24 1299本文来自CSDN博客:http://blog.csdn.net ... -
(转)ECSide入门(资料整理)
2010-03-24 14:14 831ECSide是有一个基于jsp tag的开源列表组件.简 ... -
(转)Struts2调用流程
2010-01-07 14:11 15041. 当Servlet容器接收到一个请求后,将请求交给你在we ... -
Struts1和Struts2的区别和对比
2009-08-07 20:46 6961.Action 类: • Struts1要求Action类 ...
相关推荐
毕设和企业适用springboot企业数据管理平台类及跨境电商管理平台源码+论文+视频
功能说明: 环境说明: 开发软件:VS 2017 (版本2017以上即可,不能低于2017) 数据库:SqlServer2008r2(数据库版本无限制,都可以导入) 开发模式:mvc。。。
labview程序代码参考学习使用,希望对你有所帮助。
毕设和企业适用springboot社交应用平台类及用户数据分析平台源码+论文+视频
大米外贸商城系统 简称damishop 完全开源版,只需做一种语言一键开启全球133中语言自动翻译功能,价格实现自动汇率转换,集成微信支付宝 paypal以及国外主流支付方式,自带文章博客系统。 软件架构 基于MVC+语言包模式,增加控制台,API导入产品方便对接其他系统(带json示例数据)。 使用要求 PHP7.4+ MYSQL5.6+ REDIS(可选) 安装方法 composer install 打开安装向导安装 http://您的域名/install 特色 1、缓存层增加时间与批量like删除 2、API产品导入方便对接其他系统 3、增加控制台命令行,命令行生成语言翻译包 4、后台一键开启自动翻译模式,支持全球133中语言,由于google代理翻译需要收费,这个功能需要付费。 5、可选购物车与ajax修改购物车产品 6、一键结算checkout 7、增加网站前台自定义路由 方便seo 更新日志 v3.9.7 集成鱼码支付接口,方便个人站长即使收款到账使用 v3.9.3 更新内容 1:增加ueditor与旧编辑器切换 2:增加可视化布局插
labview程序代码参考学习使用,希望对你有所帮助。
毕设和企业适用springboot生鲜鲜花类及生物识别平台源码+论文+视频.zip
毕设和企业适用springboot企业健康管理平台类及视觉识别平台源码+论文+视频.zip
毕设和企业适用springboot视频编辑类及餐饮管理平台源码+论文+视频.zip
labview程序代码参考学习使用,希望对你有所帮助。
毕设和企业适用springboot社区物业类及智能仓储平台源码+论文+视频
毕设和企业适用springboot企业知识管理平台类及人工智能医疗平台源码+论文+视频
毕设和企业适用springboot汽车电商类及新闻传播平台源码+论文+视频
毕设和企业适用springboot生鲜鲜花类及全渠道电商平台源码+论文+视频.zip
毕设和企业适用springboot企业数据智能分析平台类及投票平台源码+论文+视频
毕设和企业适用springboot全渠道电商平台类及人工智能客服平台源码+论文+视频
毕设和企业适用springboot企业云存储平台类及AI数据标注平台源码+论文+视频
毕设和企业适用springboot人工智能客服系统类及旅游规划平台源码+论文+视频
毕设和企业适用springboot社交电商类及环境监控平台源码+论文+视频
毕设和企业适用springboot生鲜鲜花类及大数据存储平台源码+论文+视频