建议楼主直接学习@aspectj 功能强大且简单
解决方案 »
- 求牛人解决大数据查询问题
- struts2 doubleselect标签 doubleHeaderKey doubleHeaderValue 不能显示
- 第一次写关于ssh程序 如何判断是否写对了每一步?大侠给支支招
- 网站的日志功能怎么做,或者用什么第三方工具比较好
- J2EE的分布式和多层
- 请教Java项目详细开发流程
- 各位大侠。小的刚开始学JAVA,问个Tomcat安装的问题,各位一定要给我解答啊。
- <JUnit In Action>,Who can tell me ,how to get one? thanks!
- 最近要用jsp+javabean做项目,请问什么开发工具比较好??
- 请问EJB如何向客户端传递ResultSet对象?
- 向前辈请教一个问题
- 字符集问题
import org.springframework.context.support.ClassPathXmlApplicationContext;public class Client {
public static void main(String[] args) {
BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");
//这返回的是一个代理类
UserManager userManager = (UserManager)factory.getBean("userManager");
userManager.addUser("123", "123");
}
}
--------------
package com.east.spring.proxy;import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.annotation.Aspect;
/**
* @author:East(张栋芳)
* @date:Nov 27, 2008
* @content:使用Aspect来实现AOP
*
*/
//定义一个Aspect表示这个类是一个切面的类
@Aspect
public class SecurityHandler{
/**
* 定义一个切入点 第一个*是方法的返回值
* add*是以add开始的所有方法
* ..是表示一个或多个参数
* addAllMethod()这个方法是Pointcut的标识
*/
@Pointcut("execution(* add*(..))")
public void allMethod(){};
/**
* 引用PointCut的标识表示是在调用方法之前执行安全检查方法
* 定义Advice,标识在那个切入点何处织入此方法
*/
@Before("allMethod()")
//安全检查方法
public void checkSecurity(){
System.out.println("----------checkSecurity-----------");
}}
-------------------------------
package com.east.spring.proxy;public interface UserManager {
public boolean addUser(String name, String password); public boolean deleteUser(int id); public boolean updateUser(int id, String name, String password); public String findUser(int id);
}
-----------------------------
package com.east.spring.proxy;
/**
* @author:East(张栋芳)
* @date:Nov 27, 2008
* @content:在没有进行安全性检查的时候,进行了增,删,查
*/
public class UserManagerImpl implements UserManager { public boolean addUser(String name, String password) {
System.out.println("-------------UserManagerImpl.addUser---------------");
return false;
} public boolean deleteUser(int id) {
System.out.println("-------------UserManagerImpl.deleteUser---------------");
return false;
} public String findUser(int id) {
System.out.println("-------------UserManagerImpl.findUser---------------");
return null;
} public boolean updateUser(int id, String name, String password) {
System.out.println("-------------UserManagerImpl.updateUser---------------");
return false;
}}
-------------------------------------
<?xml version="1.0" encoding="UTF-8"?><!--
- Application context definition for JPetStore's business layer.
- Contains bean references to the transaction manager and to the DAOs in
- dataAccessContext-local/jta.xml (see web.xml's "contextConfigLocation").
-->
<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"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
<!-- 启用Aspect对annontation的支持 -->
<aop:aspectj-autoproxy/>
<!-- 将Aspect和目标对像配置到IOC中来 -->
<bean id="security" class="com.east.spring.proxy.SecurityHandler"></bean>
<bean id="userManager" class="com.east.spring.proxy.UserManagerImpl"></bean>
</beans>