spring.net aop几个术语:

切面:针对类

切点:针对方法

object.xml

<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net" xmlns:aop="http://www.springframework.net/aop"> <object id="user" type="TestAop.User" ></object> <object id="newUser" type="TestAop.NewUser" ></object> <object id="advisor" type="TestAop.Advisor"></object> <aop:config>
<aop:advisor pointcut-ref="pointcut" advice-ref="advisor"/>
</aop:config> <object id="pointcut" type="Spring.Aop.Support.SdkRegularExpressionMethodPointcut, Spring.Aop">
<property name="pattern" value="TestAop.User.Whoami"/>
</object>
</objects>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace TestAop
{
public class Advisor : AopAlliance.Intercept.IMethodInterceptor
{ public object Invoke(AopAlliance.Intercept.IMethodInvocation invocation)
{
NewUser newUser = new NewUser();
newUser.BeforeWhoami();
var result = invocation.Proceed();
newUser.AfterWhoami();
return result;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace TestAop
{
public class NewUser
{
public void BeforeWhoami()
{
Console.WriteLine("I am before");
} public void AfterWhoami()
{
Console.WriteLine("I am after");
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace TestAop
{ public interface IUser
{
void Whoami();
}
public class User:IUser
{
public void Whoami()
{
Console.WriteLine("I am zhangwei");
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace TestAop
{
class Program
{
static void Main(string[] args)
{
Spring.Context.IApplicationContext context
= new Spring.Context.Support.XmlApplicationContext("objects.xml");
IUser user = context.GetObject("user") as IUser;
user.Whoami();
Console.ReadKey();
}
}
}

运行:

spring.net aop 讲解的更多相关文章

  1. Spring框架(4)---AOP讲解铺垫

    AOP讲解铺垫      不得不说,刚开始去理解这个Aop是有点难理解的,主要还是新的概念比较多,对于初学者一下子不一定马上能够快速吸收,所以我先对什么事Aop做一个解释: 首先说明:本文不是自己所写 ...

  2. Spring基于AOP的事务管理

                                  Spring基于AOP的事务管理 事务 事务是一系列动作,这一系列动作综合在一起组成一个完整的工作单元,如果有任何一个动作执行失败,那么事务 ...

  3. spring的AOP

    最近公司项目中需要添加一个日志记录功能,就是可以清楚的看到谁在什么时间做了什么事情,因为项目已经运行很长时间,这个最初没有开来进来,所以就用spring的面向切面编程来实现这个功能.在做的时候对spr ...

  4. spring(二) AOP之AspectJ框架的使用

    前面讲解了spring的特性之一,IOC(控制反转),因为有了IOC,所以我们都不需要自己new对象了,想要什么,spring就给什么.而今天要学习spring的第二个重点,AOP.一篇讲解不完,所以 ...

  5. Spring中AOP简介与切面编程的使用

    Spring中AOP简介与使用 什么是AOP? Aspect Oriented Programming(AOP),多译作 "面向切面编程",也就是说,对一段程序,从侧面插入,进行操 ...

  6. 02 浅析Spring的AOP(面向切面编程)

    1.关于AOP AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善.O ...

  7. Spring【AOP模块】就是这么简单

    前言 到目前为止,已经简单学习了Spring的Core模块.....于是我们就开启了Spring的AOP模块了...在讲解AOP模块之前,首先我们来讲解一下cglib代理.以及怎么手动实现AOP编程 ...

  8. Spring基础篇——Spring的AOP切面编程

    一  基本理解 AOP,面向切面编程,作为Spring的核心思想之一,度娘上有太多的教程啊.解释啊,但博主还是要自己按照自己的思路和理解再来阐释一下.原因很简单,别人的思想终究是别人的,自己的理解才是 ...

  9. spring框架 AOP核心详解

    AOP称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等待,Struts2的拦截器设计就是基于AOP的思想,是个比较经典的例子. 一 AOP的基本概念 (1)Asp ...

随机推荐

  1. DruidDataSource配置

    DruidDataSource大部分属性都是参考DBCP的,如果你原来就是使用DBCP,迁移是十分方便的. 参考配置 <bean id="dataSource" class= ...

  2. JAVA常见算法题(三十三)---求子串在字符串中出现的次数

    计算某字符串中子串出现的次数. public static void main(String[] args) { String s1 = "adcdcjncdfbcdcdcd"; ...

  3. 列出Windows域中所有的机器

    我所在的部门大概管理了300+台Windows终端,最近开始采用域的方式来进行管理.(别笑我们土,原来手工修改Windows口令太痛苦了.) 现在的任务是想在域控服务器中列出纳入域管理的所有机器,以及 ...

  4. 【BZOJ】【1007】【HNOI2008】水平可见直线

    计算几何初步 其实是维护一个类似下凸壳的东西?画图后发现其实斜率是单调递增的,交点的横坐标也是单调递增的,所以排序一下搞个单调栈来做就可以了…… 看了hzwer的做法…… /************* ...

  5. go语言基础之结构体成员的使用普通变量

    1.结构体成员的使用普通变量 示例: package main //必须有个main包 import "fmt" //定义一个结构体类型 type Student struct { ...

  6. 关于VS 工具箱灰色,不可用的解决方案

    使用vs的命令行工具,在命令行中运行:devenv /ResetSkipPkgs ,重新打开vs,重置一下工具箱 ,OK,成功了~! 希望能对大家有帮助!

  7. 判断 iframe 是否加载完毕

    我能想到的有以下几种方式: 方法一.jQuery load() var frm = document.getElementById('myiframe'); $(frm).load(function( ...

  8. Android开发之Drag&Drop框架实现拖放手势

    Android3.0提供了drag/drop框架,利用此框架可以实现使用拖放手势将一个view拖放到当前布局中的另外一个view中.本文将介绍如何使用拖放框架. 一.实现拖放的步骤 首先,我们先了解一 ...

  9. Ensemble_learning 集成学习算法 stacking 算法

    原文:https://herbertmj.wikispaces.com/stacking%E7%AE%97%E6%B3%95 stacked 产生方法是一种截然不同的组合多个模型的方法,它讲的是组合学 ...

  10. COM的一些基本概念

      Windows lets you share code at the binary level using DLLs. After all, that's how Windows apps fun ...