博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
初探Spring.Net之AOP
阅读量:5281 次
发布时间:2019-06-14

本文共 1810 字,大约阅读时间需要 6 分钟。

来源:

  日志、异常、权限,这些几乎在所有的框架或者工程中都会不可避免的底层功能,对于程序员来说是枯燥无聊的简单重复的编写代码行。但是当我第一次听说AOP编程概念的时候,我就隐约感觉到程序员从此可以从那些非业务逻辑的代码行编写中解放出来。

    粗略看了一下Spring.Net的Aop QuickStart,演示了简单的横切功能。如下是App.Config文件中Sprint.Net的配置信息。第9-22行,定义了一个名为 "myServiceObject"的Sprint.Net上下文对象,该对象服务于是target对象 "myServiceObjectTarget",并且提供名为"consoleLoggingAroundAdvice"的服务(该服务由上面定义的同名对象提供)。

 1
None.gif
        
<
objects 
xmlns
="http://www.springframework.net"
>
 2
None.gif            
<
description
>
An example that demonstrates simple AOP functionality.
</
description
>
 3
None.gif            
<
object 
id
="consoleLoggingAroundAdvice"
 type
="Spring.Aop.Support.RegexpMethodPointcutAdvisor"
>
 4
None.gif                
<
property 
name
="pattern"
 value
="Do"
/>
 5
None.gif                
<
property 
name
="advice"
>
 6
None.gif                    
<
object 
type
="Spring.Examples.AopQuickStart.ConsoleLoggingAroundAdvice"
/>
 7
None.gif                 
</
property
>
 8
None.gif            
</
object
>
 9
None.gif            
<
object
10
None.gif                
id
="myServiceObject"
11
None.gif                type
="Spring.Aop.Framework.ProxyFactoryObject"
>
12
None.gif                
<
property 
name
="target"
>
13
None.gif                    
<
object
14
None.gif                        
id
="myServiceObjectTarget"
15
None.gif                        type
="Spring.Examples.AopQuickStart.ServiceCommand"
/>
16
None.gif                
</
property
>
17
None.gif                
<
property 
name
="interceptorNames"
>
18
None.gif                    
<
list
>
19
None.gif                        
<
value
>
consoleLoggingAroundAdvice
</
value
>
20
None.gif                    
</
list
>
21
None.gif                
</
property
>
22
None.gif            
</
object
>
23
None.gif        
</
objects
>
24
None.gif
    如下是使用定义了的Spring上下文对象来实现Aop的功能(摘自Aop Quick Start)。第1-3行取得上下文对象,该对象可替代真正的业务逻辑对象ServcieCommand。
1
None.gif
                IApplicationContext ctx
2
None.gif                    
=
 ConfigurationSettings.GetConfig(
"
spring/context
"
as
 IApplicationContext;
3
None.gif                ICommand command 
=
 (ICommand) ctx[
"
myServiceObject
"
];
4
None.gif                command.Execute();
5
None.gif
    至此,我们可以看到Spring.Net的Aop实现是“工厂方法+面向接口编程+×××”,这个×××的技术核心就是myServiceObject上下文对象(即代码中的command对象)是如何构造出来的,它自动实现ServiceCommand的实现接口ICommand接口。我尝试使用 Visual Studio .Net 2003的监控功能,却无法获得command的任何对象信息。
    针对接口编程使得,程序员不得不遵循接口的编程方式。一来比较死板,二来旧的代码服用率降低。希望Spring.Net能提供类似JBoss的基于class load的Aop实现。

转载于:https://www.cnblogs.com/springdotnet/archive/2007/08/12/852358.html

你可能感兴趣的文章
PHP截取中英文混合字符
查看>>
电子眼抓拍大解密
查看>>
51nod1076 (边双连通)
查看>>
Linux pipe函数
查看>>
Zerver是一个C#开发的Nginx+PHP+Mysql+memcached+redis绿色集成开发环境
查看>>
程序的静态链接,动态链接和装载 (补充)
查看>>
关于本博客说明
查看>>
[Kaggle] Sentiment Analysis on Movie Reviews
查看>>
价值观
查看>>
mongodb命令----批量更改文档字段名
查看>>
国外常见互联网盈利创新模式
查看>>
android:scaleType属性
查看>>
shell脚本
查看>>
Upload Image to .NET Core 2.1 API
查看>>
【雷电】源代码分析(二)-- 进入游戏攻击
查看>>
Linux中防火墙centos
查看>>
[JS]递归对象或数组
查看>>
linux sed命令
查看>>
程序存储问题
查看>>
优雅地书写回调——Promise
查看>>