AOP without framwork 不使用框架的面向切面编程 JAVA实现

        //首先声明一个被切的方法
        public static interface Transaction{
    		public void execute(Session session);
	}
	//再定义一个Around处理
        public void executeTransaction(Transaction transaction)throws Exception{
		Session session=null;
		Exception exception=null;
		try{
			session=openSession();
			session.beginTransaction();
			transaction.execute(session);
			session.getTransaction().commit();
		}catch(Exception e){
			session.getTransaction().rollback();
			exception=e;
		}finally{
			session.close();
		}
		if(exception!=null){
			throw exception;
		}
	}
	//最后用起来
	public static void main(String[] args){
	    executeTransaction(s->{
	        s.save(*&&*^&^%*%^&);
	    })
	}

特别提醒:JAVA闭包暂时不支持向外界的变量赋值,但是可以对外界的数组里的内容赋值。

String[] a=new String[1];

******.(s->(a[0]="helloworld"));

System.out.println(a[0]);

你可能感兴趣的:(AOP without framwork 不使用框架的面向切面编程 JAVA实现)