Spring AOP原理解析

阅读更多

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>


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") ;
    }

}

你可能感兴趣的:(AOP,Spring,Bean,Security,XML)