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

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

2013-04-06 20:32 1021 查看
在开始写之前,先给出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> publicclass UserService:IUserService { private IUser _user; privatestring _msg; privatestring _constructor; //构造函数注入 public UserService(string constructor) { this._constructor = constructor; } //通过属性注入 相当于替代了 IUser _user = new UserDAO把这个过程交给容器来处理 public IUser User { get { returnthis._user; } set { this._user = value; } } ///<summary> /// 消息内容通过属性注入 ///</summary> publicstring MsgInfo { get { returnthis._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> publicstring 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的功能也不是很了解,希望有经验的朋友可以指点下。

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