软件151 王楚博 aodp

一、AOP是OOP的延续,是(Aspect Oriented Programming)的缩写,意思是面向切面编程。

AOP(Aspect Orient Programming),作为面向对象编程的一种补充,广泛应用于处理一些具有横切性质的系统级服务,

如事务管理、安全检查、缓存、对象池管理等。 AOP 实现的关键就在于 AOP 框架自动创建的 AOP 代理,

AOP 代理则可分为静态代理和动态代理两大类,其中静态代理是指使用 AOP 框架提供的命令进行编译,

从而在编译阶段就可生成 AOP 代理类,因此也称为编译时增强;

而动态代理则在运行时借助于 JDK 动态代理、CGLIB 等在内存中"临时"生成 AOP 动态代理类,因此也被称为运行时增强

AOP 的实现:

MyInterceptor、MyInterceptor2分别是以annotations和xml定义的切面类

package com.service;

import org.aspectj.lang.annotation.Aspect;

import org.aspectj.lang.annotation.Before;

import org.aspectj.lang.annotation.Pointcut;

@Aspect

public class MyInterceptor {

@Pointcut("execution (* com.serviceImpl.PersonServiceImpl.*(..))")

private void myMethod(){};

@Before("myMethod()")

public void doAccessCheck(){

System.out.println("before");

}

}

[java] view plain copy

package com.service;

public class MyInterceptor2 {

public void doAccessCheck(){

System.out.println("before");

}

}

业务和接口

[java] view plain copy

package com.service;

public interface PersonService {

public void save(String name);

public void update(String name);

}

[java] view plain copy

package com.serviceImpl;

import com.service.PersonService;

public class PersonServiceImpl implements PersonService {

@Override

public void save(String name) {

// TODO Auto-generated method stub

System.out.println("保存");

}

@Override

public void update(String name) {

// TODO Auto-generated method stub

System.out.println("修改");

}

}

简单做个方法前通知,其他的都一样。

[java] view plain copy

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-2.5.xsd

http://www.springframework.org/schema/aop

http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">

<aop:aspectj-autoproxy/>

<bean id="personServiceImpl" class="com.serviceImpl.PersonServiceImpl"></bean>

<bean id="personInterceptor" class="com.service.MyInterceptor2"></bean>

<aop:config>

<aop:aspect id="asp" ref="personInterceptor">

<aop:pointcut id="myCut" expression="execution (* com.serviceImpl.PersonServiceImpl.*(..))"/>

<aop:before pointcut-ref="myCut" method="doAccessCheck"/>

</aop:aspect>

</aop:config>

</beans>

测试类

[java] view plain copy

package com.test;

import org.junit.Test;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.service.PersonService;

public class AopTest {

@Test

public void interceptorTest(){

ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");

PersonService ps = (PersonService) ac.getBean("personServiceImpl");

ps.save("aa");

}

}

时间: 2024-08-02 11:53:19

软件151 王楚博 aodp的相关文章

软件151 王楚博 JavaEE的配置

一.准备以下压缩包 1.JDK1.7 文件:jdk1.7.rar 2. eclipse-jee-mars-2 文件:32位系统准备eclipse-jee-mars-2-win32.zip,64位系统准备eclipse-jee-mars-2-win32-x86_64.zip 3.maven 文件:maven-3.3.9.rar 4.maven仓库(可以从网上下载,但是速度慢) 文件:.m2.rar 二.安装(解压) 1.选择一个工作盘,如E:盘,建立目录jee 2. 将压缩包放到jee目录下,并解

软件151 王楚博 maven的导入

一.maven 包的导入 清单如下: <!-- Inherit defaults from Spring Boot --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.1.BUILD-SNAPSHOT</version>

软件151 王楚博 接口的实现

一.IOC的意思是控件反转也就是由容器控制程序之间的关系,把控件权交给了外部容器,之前的写法,由程序代码直接操控,而现在控制权由应用代码中转到了外部容器,控制权的转移是所谓反转.DI(Dependency Injection,依赖注入).IoC的一个重点是在系统运行中,动态的向某个对象提供它所需要的其他对象.这一点是通过DI(Dependency Injection,依赖注入)来实现的. IOC实现的原理: 定义DAO接口和接口的实现类 package com.dao; public inter

软件151 王楚博 struts

一.下载Struts 建立web项目,给项目添加外部引用包(project-properties-Java Build Path-Add External Jars...).添加的包有:commons-fileupload-1.2.1.jar,commons-io-1.3.2.jar,commons-logging-api-1.1.jar,freemarker-2.3.16.jar,javassist-3.7.ga.jar,ognl-3.0.jar,struts2-core-2.2.1.1.ja

用Qt写软件系列六:博客园客户端的设计与实现(用Fiddler抓包,用CURL提交数据,用htmlcxx解析HTML)

引言 博客园是本人每日必逛的一个IT社区.尽管博文以.net技术居多,但是相对于CSDN这种业务杂乱.体系庞大的平台,博客园的纯粹更得我青睐.之前在园子里也见过不少讲解为博客园编写客户端的博文.不过似乎都是移动端的技术为主.这篇博文开始讲讲如何在PC端编写一个博客园客户端程序.一方面是因为本人对于博客园的感情:另一方面也想用Qt写点什么东西出来.毕竟在实践中学习收效更快. 登录过程分析 登录功能是一个客户端程序比不可少的功能.在组装Http数据包发送请求之前,我们得看看整个登录是怎样一个过程.F

软件151 王涛 数据库的链接

package Com.Cqvie; import java.sql.Connection;import java.sql.DriverManager;import java.sql.Statement; public class Test { //常量定义(一般用全大写)localhostpublic static final String DBDRIVER="net.sourceforge.jtds.jdbc.Driver";public static final String D

如何掌握程序语言(转自王垠博客)

http://my.oschina.net/visualgui823/blog/79216 http://my.oschina.net/visualgui823/blog/79216 学习程序语言是每个程序员的必经之路.可是这个世界上有太多的程序语言,每一种都号称具有最新的“特性”.所以程序员的苦恼就在于总是需要学习各种稀奇古怪的语言,而且必须紧跟“潮流”,否则就怕被时代所淘汰. 作为一个程序语言的研究者,我深深的知道这种心理产生的根源.程序语言里面其实有着非常简单,永恒不变的原理.看到了它们,

软件151 刘光星

一.下载Struts 建立web项目,给项目添加外部引用包(project-properties-Java Build Path-Add External Jars...).添加的包有:commons-fileupload-1.2.1.jar,commons-io-1.3.2.jar,commons-logging-api-1.1.jar,freemarker-2.3.16.jar,javassist-3.7.ga.jar,ognl-3.0.jar,struts2-core-2.2.1.1.ja

刘光星 软件151

一.准备以下压缩包 1.JDK1.7 文件:jdk1.7.rar 2. eclipse-jee-mars-2 文件:32位系统准备eclipse-jee-mars-2-win32.zip,64位系统准备eclipse-jee-mars-2-win32-x86_64.zip 3.maven 文件:maven-3.3.9.rar 4.maven仓库(可以从网上下载,但是速度慢) 文件:.m2.rar 二.安装(解压) 1.选择一个工作盘,如E:盘,建立目录jee 2. 将压缩包放到jee目录下,并解