Spring AOP原理解析 博客分类: Java AOPSpringBeanSecurityXML
AOP概念:
实现AOP有两种方式:
1、采用Annoation注解的方法.
1、接口的设计
package com.hejunfeng.spring;
public interface UserManager
{
public void modifyUser(String id,String username,String password) ;
public void deleteUser(String id) ;
public void addUser(String username,String password) ;
}
2、接口的实现
package com.hejunfeng.spring.impl;
import com.hejunfeng.spring.UserManager;
public class UserManagerImpl implements UserManager
{
public void addUser(String username, String password)
{
System.out.println("----------UserManagerImpl.addUser()----------------");
}
public void deleteUser(String id)
{
System.out.println("----------UserManagerImpl.deleteUser()----------------");
}
public void modifyUser(String id, String username, String password)
{
System.out.println("----------UserManagerImpl.modifyUser()----------------");
}
}
3、定义一个切点
package com.hejunfeng.spring;
public interface MySecurityManager
{
//抽出的一个切点
public void security();
}
4、实现此切点并进行相应的一些操作(annoation注解)
package com.hejunfeng.spring.impl;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import com.hejunfeng.spring.MySecurityManager;
//这里采用注解方式
@Aspect public class MySecurityManagerImpl implements MySecurityManager
{
//定义切入点addMethod(),只负责用来描述切入那些方法.这里是add方法.其它的可能很多
//接收所有的ADD方法是否有返回值是否有*无参数都接收
@Pointcut("execution(* add*(..))")
private void allAddMethod(){ }
//定义Advice方法用来标识在切入点的何处进行织入
//抽出一个切面就是安全性检查security()
@Before("allAddMethod()")
public void security()
{
System.out.println("---------作用就是进行安全性检查---------");
}
}
5、applicationContext.xml文件的配置信息:
<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">
<aspectj-autoproxy></aspectj-autoproxy>
<bean id="mySecurityManagerImpl" class="com.hejunfeng.spring.impl.MySecurityManagerImpl"></bean>
<bean id="userManager" class="com.hejunfeng.spring.impl.UserManagerImpl"></bean>
< /beans>
6、测试,和其它方法效果一致
package com.hejunfeng.test;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.hejunfeng.spring.UserManager;
public class TestStatic {
public static void main(String[] args)
{
BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");
UserManager userManager = (UserManager)factory.getBean("userManager"); userManager.addUser("何俊峰", "110") ;
}
}
下一篇: Python实现二分查找
推荐阅读
-
spring aop的原理 博客分类: Java AOPSpringBean正则表达式配置管理
-
Spring AOP原理解析 博客分类: Java AOPSpringBeanSecurityXML
-
启动原理解析 博客分类: Spring Boot
-
spring ioc Aop原理 博客分类: spring spring
-
spring aop 原理 测试 博客分类: spring AOPSpringBeanXML
-
spring aop 原理 测试 博客分类: spring AOPSpringBeanXML
-
Spring AOP 实现原理与 CGLIB 应用 博客分类: Spring SpringAOPCGLIB
-
Spring AOP 博客分类: Java基础 SpringAOPaspectj
-
Spring AOP中pointcut expression表达式解析 及匹配多个条件 博客分类: 框架开发 spring
-
Spring AOP中pointcut expression表达式解析 及匹配多个条件 博客分类: 框架开发 spring