zoukankan      html  css  js  c++  java
  • spring--AOP--权限---demo1---bai

    AOP权限DEMO1:
    
    实体类:
    
    package com.etc.entity;
    
    import org.aspectj.lang.annotation.Pointcut;
    
    public class User implements IUser 
    {
    	public static int NORMAL = 1;//普通用户角色
    	public static int ADMIN = 2;    //管理员角色
    	private int role;  //所属的角色
    	
    	public int getRole() {
    		return role;
    	}
    
    	public void setRole(int role) {
    		this.role = role;
    	}
    
    	
    	public void login() {
    		System.out.println("执行登录了!");
    		
    	}
    
    	
    	public void reg() {		
    		System.out.println("执行注册了!");
    	//throw new RuntimeException("注册过程发生异常!");
    	}
    
    }
    ================================================================
    实体类需实现的接口:
    
    package com.etc.entity;
    
    //定义用户接口
    public interface IUser 
    {
    	void login(); //登录
    	void reg(); //注册
    	
    }
    =================================================================
    通知类:
    
    package com.etc.advice;
    
    import java.util.Calendar;
    
    import org.aspectj.lang.ProceedingJoinPoint;
    
    import com.etc.entity.User;
    
    //实现权限校验的通知.规定周三不能登录系统
    public class PrivilegeAdvice 
    {
    	
    	public void  around(ProceedingJoinPoint point) throws Throwable
    	{
    		//获得该通知被织入的目标对象
    		User u = (User) point.getTarget();
    		
    		//1 今天是星期几?
    		Calendar c = Calendar.getInstance();
    		
    		int day = c.get(Calendar.DAY_OF_WEEK);
    		if((day-1)==5&&u.getRole()==User.ADMIN)
    		{
    			System.out.println("周三普通用户不能登录本系统!");
    			return;
    		}
    		point.proceed();//允许代码继续往前
    		
    	}
    }
    
    =================================================================
    配置文件:
    
    <?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:p="http://www.springframework.org/schema/p"
    	xmlns:aop="http://www.springframework.org/schema/aop"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    	http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
      <!-- 定义1个业务类对象 -->
      <bean id="user" class="com.etc.entity.User">
        <property name="role" value="2"></property>
      </bean>
    <!-- 定义1个通知类对象  -->
    	<bean id="myadv2" class="com.etc.advice.PrivilegeAdvice">
      	</bean> 
      <aop:config>
       <!-- 配置切点的集合、即切线 -->
         <aop:pointcut expression="execution(* com.etc.entity.User.*(..))" id="mypc"/>
       <!-- 配置切入的方向 ,即切面-->
       	  <aop:aspect ref="myadv2">
       	     <!-- 前置通知 -->
       	  	<aop:before method="around" pointcut-ref="mypc"/>
       	  </aop:aspect>
      </aop:config>
      	
    </beans>
    ===============================================
    测试类:
    
    package com.etc.test;
    
    import org.springframework.beans.factory.BeanFactory;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    import com.etc.entity.IUser;
    
    public class Test {
    	public static void main(String[] args) 
    	{
    		BeanFactory fac = new ClassPathXmlApplicationContext("applicationContext.xml");		
    		IUser u = (IUser) fac.getBean("user");
    		
    		//执行业务方法
    		u.login();
    		System.out.println("=====");
    		
    		try 
    		{
    			u.reg();
    		} catch (Exception e) 
    		{
    			
    		}
    	}
    }
    =====================================================================
    

      

  • 相关阅读:
    C# 多线程 弹出模态MessageBox的一种方法
    CentOS 7安装Docker
    CentOS 6 安装Docker
    docker三要素
    openstack_dashboard无法获取nova
    cinder安装与配置
    Dashboard安装与配置
    openstack-neutron安装与配置
    openstack在controller节点使用openstack network agent list不显示计算节点
    nova安装与配置
  • 原文地址:https://www.cnblogs.com/ipetergo/p/6277365.html
Copyright © 2011-2022 走看看