您的位置:首页 > 编程语言 > Java开发

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

2011-02-18 13:30 876 查看
  在开始写之前,先给出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的基本感念。具体应用看下面内容。

  首先来看看项目结构

  UserService

namespace NSpring.Service
{
/// <summary>
/// 用户service
/// </summary>
public class UserService:IUserService
{
private IUser _user;
private string _msg;
private string _constructor;

//构造函数注入
public UserService(string constructor)
{
this._constructor = constructor;
}

//通过属性注入 相当于替代了 IUser _user = new UserDAO把这个过程交给容器来处理
public IUser User
{
get { return this._user; }
set { this._user = value; }
}

/// <summary>
/// 消息内容通过属性注入
/// </summary>
public string MsgInfo
{
get { return this._msg; }
set { this._msg = value; }
}

/// <summary>
/// 添加用户
/// </summary>
/// <param name="u"></param>
/// <returns></returns>
public User AddUser(User u)
{
return User.AddUser(u);
}

/// <summary>
/// 发送消息
/// </summary>
/// <returns></returns>
public string SendMsg()
{
return "注入的MsgInfo值是:" + MsgInfo + "<br/>" + "_constructor通过构造函数注入的值:" + _constructor;
}
}
}


  在代码中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的功能也不是很了解,希望有经验的朋友可以指点下。

  代码下载中文文档
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐