`
jilong-liang
  • 浏览: 481032 次
  • 性别: 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 + NHibernate 入门例子

    Spring.NET还提供了AOP(面向切面编程)支持,允许在不修改业务代码的情况下添加如日志、事务管理等功能。 **NHibernate入门** NHibernate是.NET上的一个流行的ORM框架,它将.NET对象模型与关系型数据库之间进行...

    spring ioc aop mvc boot-学习笔记.docx

    Spring框架是Java开发中不可或缺的一部分,它为开发者提供了强大的依赖注入(IOC)和面向切面编程(AOP)功能,以及用于构建Web应用程序的MVC框架。Spring Boot则是基于Spring框架构建的应用程序启动器,旨在简化...

    Spring IOC.pdf

    IOC和AOP(面向切面编程)都是Spring框架中的核心概念。AOP是一种编程范式,它允许开发者通过预定义的方式将横切关注点(如日志记录、安全检查、事务管理等)从业务逻辑代码中分离出来,以达到业务逻辑与系统服务...

    Spring - 3 AOP

    它提供了丰富的功能集,包括依赖注入(Dependency Injection, DI)、面向切面编程(Aspect-Oriented Programming, AOP)、数据访问/集成(Data Access/Integration)、事务管理(Transaction Management)等。...

    Spring学习笔记

    【Spring学习笔记】这篇笔记主要涵盖了Spring框架的核心概念和应用,包括面向接口编程、依赖注入(IOC/DI)、面向切面编程(AOP)以及Spring的整合应用,特别是与Struts2和Hibernate的整合。 **面向接口编程**是...

    Spring框架文档 - 核心技术部分 中英双语版 第一部分.pdf

    Spring框架是Java开发中的核心工具,它提供了许多关键特性,如控制反转(IoC)和面向切面编程(AOP),这些都在其核心技术部分得到详细阐述。本文档将深入探讨Spring框架的核心组件,特别是IoC容器,以及如何利用它...

    Spring IoC应用开源架构源码2021.pdf

    然而,BeanFactory并不提供高级特性,如资源加载、事件传播、AOP(面向切面编程)支持等。 2. ApplicationContext:它是BeanFactory的子接口,扩展了BeanFactory的功能,提供了更丰富的企业级服务。...

    spring3.0.5所有jar包

    Spring是一个开源的应用框架,主要用于简化Java企业级应用的开发,尤其在服务端,它提供了全面的控制反转(IoC)和面向切面编程(AOP)支持。下面我们将深入探讨Spring 3.0.5中的关键知识点。 1. **控制反转(IoC)...

    Spring框架文档 - 核心技术部分 中文版 - 第二部分.pdf

    在本篇文档的第二部分,我们将深入探讨Spring的核心技术,包括控制反转(IoC)容器、事件处理、资源管理、国际化(i18n)、验证、数据绑定、类型转换、Spring表达式语言(SpEL)以及面向切面编程(AOP)。...

    spring 4.11源码

    在Spring 4.11版本中,我们关注的是其AOP(面向切面编程)、IOC(控制反转)以及Web组件相关的源代码。下面将对这些关键知识点进行详细的解释和探讨。 **一、控制反转(IOC)** 控制反转是Spring框架的核心特性之...

    spring原理与笔记

    Spring的核心特性包括反向控制(IoC)和面向切面编程(AOP),这两个特性使得Spring能够在不增加过多复杂性的前提下,提高代码的可维护性和可扩展性。 反向控制(IoC),也称为依赖注入(DI),是一种设计模式,它...

    Spring框架文档 - 核心技术部分 中文版 - 第一部分.pdf

    Spring框架是Java开发中最常用的轻量级框架之一,它的核心技术主要围绕着控制反转(Inversion of Control,IoC)容器和面向切面编程(Aspect-Oriented Programming,AOP)展开。本篇文档将深入探讨这些核心概念以及...

    Spring练习题.pdf

    Spring框架是Java开发中不可或缺的一部分,它提供了丰富的功能,包括依赖注入(DI)和控制反转(IoC),面向切面编程(AOP),以及用于国际化(i18n)的支持。下面将详细解释这些概念。 1. **SSH整合**: SSH是...

    NSpring&Nhibernate实例

    它还提供了AOP(面向切面编程)支持,便于实现事务管理等功能。在本实例中,Spring将作为整个应用程序的“胶水”,管理对象的生命周期,并协调不同组件之间的交互。 其次,Hibernate作为流行的ORM框架,使得Java...

    三大框架之一Spring

    - **AOP支持**:Spring提供了一个强大的面向切面编程的支持,使得业务逻辑和系统服务分离。 ### Spring框架结构 Spring框架由多个模块组成,这些模块可以分为核心容器、数据访问/集成、Web、IoC容器、AOP、工具、...

    spring2.5.5.zip

    Spring框架是Java开发中的一个核心框架,以IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)为核心,提供了丰富的功能来简化企业级应用的开发工作。Spring 2.5.5是该框架...

Global site tag (gtag.js) - Google Analytics