`
jilong-liang
  • 浏览: 470765 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类

NSpring.Net学习 控制反转(IoC)和面向切面编程(AOP)(转)

    博客分类:
  • C #
阅读更多

在开始写之前,先给出spring.net官方网站,在那里有大家所需要的例子和教程。

  Spring.Net有两个很重要的感念就是IoC(控制反转)和DI(依赖注入)。

  控制反转通俗的讲就是将对象的控制权转移给外部容器,即控制权的转移。

  例:

  有一个IUser接口和一个继承了他的类UseDAO,传统的实现我们会采取直接实例化接口

IUser user =new UserDAO

  或者通过一个工厂类来创建这个接口的实例。

IUser dal = UserFactory.CreateUserDao();

  但通过spring.net的IoC实现,可以这么来写

IApplicationContext ctx =new XmlApplicationContext("~/SpringConfig/spring.xml");
IUser user
= (IUser)ctx.GetObject("UserDAO")

  这实际上就把UserDAO的实现交给容器处理。

  上面只是简单的介绍了IoC的基本感念。具体应用看下面内容。

  首先来看看项目结构

  

  NSpring.AOP:AOP通知层

  NSpring.Model:实体层

  NSpring.IDAL:DAO接口层

  NSpring.DAL:DAO层

  NSpring.Service:服务层

  NSpring.BLL:业务层

  NSpring:Web前端

  对于项目结构,在这里不做多说,只是为了演示Spring.Net的IoC和AOP的实现。如果有什么更好的建议,欢迎大家指正。

  对于具体代码这里就不贴了,等下一起打包附上。只做一些关键部分。

  spring.net的配置

复制代码
1 <?xml version="1.0" encoding="utf-8" ?>
2  <objects xmlns="http://www.springframework.net">
3
4 <description>An example that demonstrates simple IoC features.</description>
5
6 <!-- UserDAO class -->
7 <object id="UserDAO" type="NSpring.DAL.UserDAO,NSpring.DAL"></object>
8
9 <!-- UserService 对象默认为singleton模式布署 -->
10 <object id="UserService" type="NSpring.Service.UserService,NSpring.Service" singleton="false">
11
12 <!-- 构造函数注入 通过索引匹配参数,也可以通过name和type来匹配-->
13 <constructor-arg index="0" value="构造函数注入的值"></constructor-arg>
14
15 <!-- 属性注入 name指属性的名称 ref指上面的object -->
16 <property name="_user" ref="UserDAO"></property>
17 <property name="MsgInfo" value="属性注入的值"></property>
18 </object>
19
20 <!-- 环绕通知 -->
21 <object id="UserAdvice" type="NSpring.AOP.UserAdvice,NSpring.AOP"></object>
22
23 <object id="exampleService" type="Spring.Aop.Framework.ProxyFactoryObject">
24 <property name="target" ref="UserService"/><!-- 拦截目标 -->
25 <property name="interceptorNames">
26 <list>
27 <value>UserAdvice</value><!-- 具体通知 -->
28 </list>
29 </property>
30 </object>
31
32  </objects>
复制代码

  在上面的配置文件中,<object>标签标示的是一个对象 id是这个对象的标示并且是唯一的,type指向这个对象的具体位置。

  在上面的UserService中包含了属性和构造函数的注入,先来看看UserService类

复制代码
1 namespace NSpring.Service
2 {
3 ///<summary>
4 /// 用户service
5 ///</summary>
6  publicclass UserService:IUserService
7 {
8 private IUser _user;
9 privatestring _msg;
10 privatestring _constructor;
11
12 //构造函数注入
13  public UserService(string constructor)
14 {
15 this._constructor = constructor;
16 }
17
18 //通过属性注入 相当于替代了 IUser _user = new UserDAO把这个过程交给容器来处理
19  public IUser User
20 {
21 get { returnthis._user; }
22 set { this._user = value; }
23 }
24
25 ///<summary>
26 /// 消息内容通过属性注入
27 ///</summary>
28  publicstring MsgInfo
29 {
30 get { returnthis._msg; }
31 set { this._msg = value; }
32 }
33
34 ///<summary>
35 /// 添加用户
36 ///</summary>
37 ///<param name="u"></param>
38 ///<returns></returns>
39  public User AddUser(User u)
40 {
41 return User.AddUser(u);
42 }
43
44 ///<summary>
45 /// 发送消息
46 ///</summary>
47 ///<returns></returns>
48  publicstring SendMsg()
49 {
50 return"注入的MsgInfo值是:"+ MsgInfo +"<br/>"+"_constructor通过构造函数注入的值:"+ _constructor;
51 }
52 }
53 }
复制代码

  在代码中User属性和_constructor分别通过IoC容器来进行注入。

  在配置文件23行开始是AOP(面向切面编程)的配置。关于具体概念可以参考中文文档和Spring.Net官网。

<object id="UserAdvice" type="NSpring.AOP.UserAdvice,NSpring.AOP"></object>

  上面这句是配置一个通知类型,在这里用的是环绕通知(还有前置、异常、后置等通知)。

  本例子只是做为spring.net的测试项目。对于spring.net的IoC和AOP的初步试验,更多关于spring.net的特性还是参考官方为准,那里提供了丰富的示例项目。

  自己最近在学习spring.net,但是没有在实际的项目中使用过,因此对如何更好的使用spring.net的功能也不是很了解,希望有经验的朋友可以指点下。

  代码下载中文文档

 

来自:http://www.cnblogs.com/xqhppt/archive/2011/02/18/1957715.html

 

分享到:
评论

相关推荐

    Spring.NET控制反转(IoC)和面向切面(AOP)的容器框架

    Spring.NET 控制反转(Inversion of Control,英文缩写为IoC),也叫依赖注入(Dependency Injection)。我个人认为控制反转的意思是依赖对象(控制权)发生转变,由最初的类本身来管理依赖对象转变为IoC框架来管理...

    Spring.Net演示实例(IOC、AOP、属性注入、构造函数注入、通知过滤器)

    今天有空,写了基于C#使用Spring.Net的演示实例,希望能给有需要的人带来帮助,其中演示了配置下的IOC、AOP、属性注入、构造函数注入、通知过滤器、以及不使用配置直接代码硬编的AOP动态代码过程,另外还增加了...

    .NET平台下的依赖注入(IOC)和 面向切面(AOP)相结合简洁实用的使用方式

    近日, 学习.NET平台下的依赖注入(IOC)和 面向切面(AOP)。 力求获得一种简洁实用的方法实现IOC和AOP相结合的使用方式。 查阅了多个技术资料。经过多次测试,基本达到目的。 IOC使用微软的 Microsoft.Practices....

    [Ioc容器] Spring.NET 1.3.2

    Spring.NET is an open source application framework that makes building enterprise .NET applications easier; Providing components based on proven design patterns that can be integrated into all tiers...

    C# Spring.Net演示实例【更新版】(IOC、AOP、属性注入、构造函数注入、通知过滤器)

    今天有空,写了基于C#使用Spring.Net的演示实例,希望能给有需要的人带来帮助,其中演示了配置下的IOC、AOP、属性注入、构造函数注入、通知过滤器、以及不使用配置直接代码硬编的AOP动态代码过程,另外还增加了...

    Spring中IOC(反转控 制) 和 AOP(面向方面编程)

    Spring中IOC(反转控 制) 和 AOP(面向方面编程)

    spring.net中文手册在线版

    它提供了很多方面的功能,比如依赖注入、面向方面编程(AOP)、数据访问抽象及ASP.NET扩展等等。Spring.NET以Java版的Spring框架为基础,将Spring.Java的核心概念与思想移植到了.NET平台上。 第一章 序言 第二章 ...

    Spring框架资料,Ioc容器, AOP面向切面编程 ,声明式事务 ,Spring5新特性

    Spring框架资料,Ioc容器, AOP面向切面编程 ,声明式事务 ,Spring5新特性

    springioc和spring aop

    控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找...

    Spring.NET学习笔记-实现一个简易的IoC框架

    在我们使用Spring.NET框架的时候,首先需要实例化Spring.NET容器, 然后调用IoC容器IObjectFactory接口中GetObject方法获取容器中的对象。通过这一点就可以告诉我们制作IoC容器需要写一个获取XML文件内容的方法和申明...

    spring.net demo全

    spring.net AOP应用 IOC注入。

    spring ioc aop基础理论实践笔记

    1,spring是一个开源的免费的框架(容器)。 2,spring是一个轻量级的,非入侵式的框架。 ​ 非入侵式:就是项目引入了这个框架之后,...总结:spring就是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的框架。

    Spring.Net控制反转IoC入门使用

    主要为大家详细介绍了Spring.Net控制反转IoC入门使用的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    Spring 的IOC和AOP特点

    Spring的核心:IOC与AOP。IOC是控制反转或依赖注入,AOP是面向切面编程。

    Spring.NET学习笔记-控制反转

    控制反转(Inversion of Control,英文缩写为IoC),也叫依赖注入(Dependency Injection)。我个人认为控制反转的意思是依赖对象(控制权)发生转变,由最初的类本身来管理依赖对象转变为IoC框架来管理这些对象,使得...

    Spring_aop源码

    Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象...

    Spring IOC和Spring AOP_spring aop_springIOC

    spring基础Spring IOC和Spring AOP的原理及使用

    spring ioc和aop原理流程图(详细)

    spring ioc容器初始化流程图 spring ioc容器依赖注入流程图 spring aop实现原理流程图

    spring.net依赖注入Demo

    spring.net是为.net开发者提供的一个控制反转操作框架也称作依赖注入。 此demo仅提供参考spring.net mvc+三层

    Spring.NET学习笔记

    基础篇包括:控制反转,环境搭建,实现简易IOC框架,对象的创建,容器中对象作用域,依赖注入,依赖对象的注入,集合类型的注入等 所有代码都是基于.net平台的C#语言实现的,资源整理自互联网,欢迎爱好学习研究框架...

Global site tag (gtag.js) - Google Analytics