- 浏览: 547365 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (740)
- css (4)
- jquery (8)
- javascript (23)
- html (0)
- uml (0)
- 设计模式 (1)
- 开发工具 (14)
- json (4)
- struts 1.x (3)
- spring (3)
- hibernate (6)
- struts 2.x (17)
- JFreechart (0)
- j2se (48)
- jsp (9)
- flex (22)
- 找工作 (1)
- 技术杂谈 (18)
- 网络编程 (5)
- io流 (1)
- ORACLE (15)
- 报表 (3)
- extjs (11)
- jpbm (2)
- swing (5)
- jspereports (3)
- sql (1)
- linux (15)
- ps (1)
- storm (4)
- hbase (8)
- li (0)
- python (1)
- hive (3)
- 机器学习 (1)
- hdfs (1)
- elasticsearch (1)
- hadoop 2.2 (5)
- hadoop (1)
最新评论
-
Tristan_S:
这个有点意思
ASM -
starryskydog:
程序修改detail band部分的样式 如内容字体大小 ...
使用jasperReport实现动态表头 -
samwong:
Good, so usefule
使用YUI Compressor压缩CSS/JS -
gc715409742:
能够告诉我怎么在web项目中使用YUI Compressor? ...
使用YUI Compressor压缩CSS/JS -
JsonTeye:
您好! 我看你的代码,我现在也在做动态报表,实现功能由用户自己 ...
使用jasperreport动态生成pdf,excel,html
个人aop框架
Advice.java
package com.cn.aop.advice;
import java.lang.reflect.Method;
public interface Advice {
public void beginMethod(Object proxy,Method method,Object[] args);
public void afterMethod(Object proxy,Method method,Object[] args);
public void calculateTime(Object proxy, Method method, Object[] args);
}
Myadvice.java
package com.cn.aop.advice.impl;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import com.cn.aop.advice.Advice;
public class MyAdvice implements Advice {
private long beginTime;
private long endTime;
@Override
public void afterMethod(Object proxy, Method method, Object[] args) {
// TODO Auto-generated method stub
beginTime = System.currentTimeMillis();
System.out.println(method.getName()+"方法在第"+beginTime+"秒开始运行");
}
@Override
public void beginMethod(Object proxy, Method method, Object[] args) {
// TODO Auto-generated method stub
endTime = System.currentTimeMillis();
System.out.println(method.getName()+"方法在第"+endTime+"秒运行运行结束");
}
@Override
public void calculateTime(Object proxy, Method method, Object[] args) {
// TODO Auto-generated method stub
System.out.println(method.getName()+"方法运行了"+(endTime-beginTime)+"秒");
}
}
Subject.java
package com.cn.aop.subject;
public interface Subject {
public void sayBye(String name);
}
Myadvice.java
package com.cn.aop.subject.impl;
import com.cn.aop.subject.Subject;
public class RealSubject implements Subject {
@Override
public void sayBye(String name) {
// TODO Auto-generated method stub
System.out.println(name+"Good Bye");
}
}
BeanFactory.java
package com.cn.aop.factory;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import com.cn.aop.advice.Advice;
public class BeanFactory {
private Properties ppt = new Properties();
public BeanFactory(InputStream input){
try {
ppt.load(input);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public Object getBean(String name){
String className = ppt.getProperty(name);
Class clazz = null;
Object bean = null;
try {
clazz = Class.forName(className);
bean=clazz.newInstance();
if(bean instanceof BeanProxyFactory){
Object proxy = null;
Advice advice = (Advice)Class.forName(ppt.getProperty(name+".advice")).newInstance();
Object target = Class.forName(ppt.getProperty(name+".target")).newInstance();
BeanProxyFactory proxyFactory =(BeanProxyFactory)bean;
proxyFactory.setTarget(target);
proxyFactory.setAdvice(advice);
proxy = proxyFactory.getProxy();
return proxy;
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return bean;
}
}
BeanProxyFactory.java
package com.cn.aop.factory;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import com.cn.aop.advice.Advice;
public class BeanProxyFactory {
private Advice advice;
private Object target;
public Advice getAdvice() {
return advice;
}
public Object getTarget() {
return target;
}
public void setAdvice(Advice advice) {
// TODO Auto-generated method stub
this.advice = advice;
}
public void setTarget(Object target) {
// TODO Auto-generated method stub
this.target = target;
}
public Object getProxy() {
// TODO Auto-generated method stub
Object proxy =null;
System.out.println(getTarget());
proxy = Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(),
new InvocationHandler(){
Advice advice = getAdvice();
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
// TODO Auto-generated method stub
advice.beginMethod(proxy, method, args);
Object returnValue = method.invoke(target, args);
advice.afterMethod(proxy, method, args);
advice.calculateTime(proxy, method, args);
return returnValue;
}
});
return proxy;
}
}
DynamicProxyTest.java
package com.cn.aop;
import java.io.InputStream;
import com.cn.aop.factory.BeanFactory;
import com.cn.aop.subject.Subject;
public class DynamicProxyTest {
public static void main(String[] args){
InputStream input = DynamicProxyTest.class.getResourceAsStream("config.properties");
//System.out.println(input);
BeanFactory factory = new BeanFactory(input);
// System.out.println(factory);
Subject suject = factory.getBean("bean");
}
}
属性文件:config.properties
bean.advice=com.cn.aop.advice.impl.MyAdvice
bean=com.cn.aop.factory.BeanProxyFactory
bean.target=com.cn.aop.subject.impl.RealSubject
#bean=com.cn.aop.subject.impl.RealSubject
发表评论
-
使用Java调用谷歌搜索
2013-10-19 12:50 902转自:http://yangshangchuan.iteye ... -
走出类加载器迷宫
2013-10-16 14:22 691这是前几天在看类加载器机制时搜到的一篇旧文,网上搜了搜 ... -
Log4j使用
2012-12-05 11:34 784... -
Java的JDBC数据库连接池实现方法
2012-09-14 10:20 743虽然J2EE程序员一般都有现成的应用服务器所带的JDBC数据库 ... -
什么是线程安全和线程不安全
2012-08-23 14:49 795什么是线程安全和线程 ... -
线程运行栈信息的获取
2012-08-23 14:49 833线程运行栈信息的获取 ... -
log4j 获取行号
2012-08-23 14:50 1162log4jjava 今天看log4j的日志,突然注意到log ... -
javassist【动态改字节码】学习三
2012-08-23 14:50 2669这里举个简单的例子,来记录下如何用CtClass创建一个类,并 ... -
javassist【动态改字节码】学习二
2012-08-22 11:53 839写了个例子。 有一个类: Java代码 package ... -
javassist[动态改字节码]学习一
2012-08-22 11:52 905前段时间为了公司里的 ... -
JVM启动参数
2012-08-22 11:51 948一、标准参数 1.-server -client 虚拟机服务器 ... -
使用javassist动态注入代码
2012-08-22 11:33 788关于java字节码的处理,目前有很多工具,如bcel,asm。 ... -
利用javaassist修改Class文件
2012-08-22 11:22 1504我们在开发中有时候会遇到这样的问题,就是使用的某个第三方包中的 ... -
JavaMail
2012-08-16 20:03 951在Java EE应用程序中,经常需要发送E-mail。Java ... -
让java变成脚本语言
2012-08-15 12:42 0今天在弄游戏的GM模块,大部分gm命令很简单,只是单纯改 ... -
JavaAgent
2012-08-13 23:43 1278-javaagent 这个JVM参数是JDK 5引进的. j ... -
在Eclipse RCP中实现控制反转(IoC)
2012-08-13 23:13 972摘要:这篇文章描述了 ... -
aop的几种实现方式
2012-08-05 21:14 9491 AOP各种的实现 AOP就是面向切面编程,我们可以从 ... -
Java编程中“为了性能”尽量要做到的一些地方
2012-07-28 21:36 596http://www.iteye.com/magazines/ ... -
java基础拾遗
2012-06-17 10:05 882. 电梯直达 楼主 发表于 2012-1-28 13: ...
相关推荐
7. **AOP代理(AOP Proxy)**:由AOP框架创建的对象,负责执行切面的逻辑,如JDK动态代理或CGLIB代理。 8. **织入(Weaving)**:将切面逻辑插入到目标对象的过程,可在编译时、类加载时或运行时完成。 #### 三、通知...
在Java领域,Spring框架提供了强大的AOP支持,使得开发者能够方便地实现面向切面的编程。 在“基于aop的日志增删改查的记录”这个主题中,我们关注的是如何利用AOP来记录应用中的日志,尤其是针对数据库操作(增、...
4. **代理 (Proxy)**:AOP 框架创建的对象,用来包装目标对象。当客户端调用目标对象时,实际上是调用了代理对象。 5. **连接点 (Joinpoint)**:程序执行过程中的某个特定点,如方法调用、字段访问等。 6. **切点 ...
PostSharp使用静态织入方式实现AOP,其连接点非常丰富,使用简单,而且相对其它一些.NET平台上的AOP框架来说,PostSharp较为轻量级,但是功能却一点也不逊色,因此是我比较喜欢的一个AOP框架。更多关于PostSharp的...
选择哪种配置方式取决于项目的具体需求和个人偏好。对于简单的项目或小型团队,基于注解的配置可能更为便捷;而对于大型项目或复杂的团队协作,则可能更倾向于使用基于XML的配置来获得更高的灵活性和可维护性。
Spring AOP,全称Spring面向切面编程,是Spring框架中的一个重要组成部分,它提供了一种在不修改原有代码的情况下,对程序进行功能增强的技术。在实际开发中,我们经常使用AOP来处理如日志记录、事务管理、权限校验...
Springframework为Java开发者提供了一个灵活的AOP框架,可以与其他技术集成,以便更好地管理应用程序中的关注点。 Spring AOP支持四种类型的Advice:Before Advice、After Advice、Around Advice、Throw Advice。 ...
【三大框架个人总结】 在Java Web开发领域,"三大框架"通常指的是Struts、Spring和Hibernate,这三者合称为SSH。它们各自负责不同的职责,共同构建了一个强大的企业级应用开发解决方案。 1. **Struts**:Struts是...
本例子是一个关于如何在Spring框架中实现AOP的应用实例。 标题中的"aop例子aop例子"表明我们将探讨Spring AOP的实践应用。Spring是Java领域中最流行的框架之一,它提供了对AOP的强大支持,使得我们可以方便地创建和...
综上所述,这个基于SSH框架开发的个人博客系统利用了Spring的依赖注入和AOP,Struts的MVC模式,以及Hibernate的ORM功能,构建了一个功能完善的个人博客平台,同时借助MySQL数据库存储用户和文章数据。对于学习Java ...
这个个人博客系统正是基于SSH框架构建的,它实现了用户管理、文章发布、评论互动等一系列博客应有的功能,并且包含了数据库文件,意味着数据持久化层已经设计并实现。 Struts2是MVC(Model-View-Controller)架构...
一个轻量级Java框架,包含ioc、aop、config、cache、job、Jdbc、web等。个人经导师指导并认可通过的97分大作业设计项目,适用人群:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业或毕业设计,作为...
基于springboot框架实现微信点餐系统,含微信支付,公众号开发,aop以及websocket思想.zip个人经导师指导并认可通过的高分毕业设计项目,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者。...
在本压缩包中,我们包含了四个与IT领域相关的文件,主要涵盖了Spring框架、面向切面编程(AOP)以及Hibernate ORM框架的相关知识。下面将分别对这些知识点进行详细阐述。 首先,Spring框架是Java企业级应用开发中的...
**基于JFinal框架的个人博客系统** 在当前的互联网环境中,个人博客系统作为一种自我表达、知识分享和交流的平台,已经变得越来越普遍。本项目基于Java的轻量级Web开发框架——JFinal,构建了一个高效、简洁且易于...
总的来说,这个JavaWeb个人博客系统利用SSH2框架构建,实现了用户管理、文章发布、评论互动等功能,是一个典型的Web应用实例。学习这个系统可以帮助开发者掌握JavaWeb开发的基本流程和技术,理解MVC架构以及Spring、...
2. **Java开源框架**:如Spring MVC,它是Spring框架的一部分,提供了强大的依赖注入(DI)和面向切面编程(AOP)功能,使得开发者能轻松地编写出松耦合、可测试的代码。Struts2则结合了Struts1和WebWork的优点,...
Spring框架是Java开发中最常用的轻量级开源框架之一,它以其强大的依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-...无论是对个人技能提升还是职业发展,深入学习Spring框架都将是一项极具价值的投资。
这个“ssh框架开发的个人博客系统(前后台)”项目,旨在提供一个功能完善的个人博客平台,包括前台的展示功能以及后台的用户管理模块。 1. **Struts2**:作为MVC(模型-视图-控制器)架构的一部分,Struts2负责...
【SSH框架详解与个人网络相册应用】 SSH框架,全称Struts2+Spring+Hibernate,是Java开发中常用的一种企业级应用开发框架组合。它整合了三大框架的优势,为开发者提供了一种高效、灵活且稳定的开发环境。在这个...