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

 更新时间:2017年06月05日 10:12:21   作者:Gress  
这篇文章主要为大家详细介绍了Spring.Net控制反转IoC入门使用的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

Spring.Net包括控制反转(IoC) 和面向切面(AOP),这篇文章主要说下IoC方面的入门。

一、首先建立一个MVC项目名称叫SpringDemo,然后用NuGet下载spring(我用的是Spring.Net NHibernate 4 support)

二、类设计,在Models文件夹下面建立类,主要IUserInfo,UserInfo,Order 三个类代码如下:

public interface IUserInfo
  {
    string ShowMeg();
  }
public class UserInfo : IUserInfo
  {
    public string UserName { get; set; }
    public Order OrderBy { get; set; }
    public string ShowMeg()
    {
      return "姓名:" + UserName + "订单号:" + OrderBy.OrderNo;
    }
  }
public class Order
  {
    public string OrderNo { get; set; }
  }

三、进入关键的一步:修改配置文件。在web.config里直接修改 如下:

<sectionGroup name="spring">
   <!--解析spring块的对象-->
   <section name="context" type="Spring.Context.Support.ContextHandler,Spring.Core"/>
   <!--配置解析spring存放对象的容器集合-->
   <section name="objects" type="Spring.Context.Support.DefaultSectionHandler,Spring.Core"/>
  </sectionGroup>
  
 </configSections>
<!--****************** Spring 配置开始 ******************-->
 <spring>
  <context>
   <!--容器配置,配置当前容器对象放在上面位置:当前是在现在的配置文件中-->
   <resource uri="config://spring/objects" /><!--当前-->
  </context>
  <objects xmlns="http://www.springframework.net">
   <!--这里存放容器所有节点-->
   <description>An example that demonstrates simple Ioc features</description>
   <!-- name 必须唯一 可以随意命名,一般为类型名称,type=类的全部名称,所在程序集,目的是为了让容器轻松的反射创建对象-->
   <object name="UserInfo" type="SpringDemo.Models.UserInfo,SpringDemo">
    <property name="UserName" value="老王" />
    <!--ref 指向下面的属相注入-->
    <property name="OrderBy" ref="Order" />
   </object>
   <object name="Order" type="SpringDemo.Models.Order,SpringDemo">
    <property name="OrderNo" value="20170808" />
   </object>
  </objects>
 </spring>
 <!--****************** Spring 配置结束 ******************-->

四、代码测试,新建控制器,代码如下:

public ActionResult Index()
    {
      IApplicationContext ctx = ContextRegistry.GetContext();
      IUserInfo lister = (IUserInfo)ctx.GetObject("UserInfo");
      ViewBag.msg = lister.ShowMeg();
      return View();
    }

五、前台添加显示 @ViewBag.msg 运行结果如下:

六、前已经大功告成,但如果想把配置文件单独出来该怎么弄呢,为了达到测试效果新建一个类NewUserInfo 代码如下:

public class NewUserInfo : IUserInfo
  {
    public NewUserInfo(string name, Order order)
    {
      this.UserName = name;
      this.OrderBy = order;
    }

    public string UserName { get; set; }
    public Order OrderBy { get; set; }

    public string ShowMeg()
    {
      return "姓名:" + UserName + "订单号:" + OrderBy.OrderNo;
    }
  }

七、新建文件夹Config下建立objects.xml 属性设置生成到目录 内容如下:

<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net">
 <!--这里存放容器所有节点-->
 <description>An example that demonstrates simple Ioc features</description>
 
 <!--构造函数注入-->
 <object name="NewUserInfo" type="SpringDemo.Models.NewUserInfo,SpringDemo">
  <constructor-arg index="0" value="张学友"/>
  <constructor-arg index="1" ref="Order"/>
 </object>
 <!--复杂依赖注入-->
 <object name="Order" type="SpringDemo.Models.Order,SpringDemo">
  <property name="OrderNO" value="20170909"/>
 </object> 
 
</objects>


八、修改web.config 指定objects.xml为解析依赖

<resource uri="~/Config/objects.xml" /><!--指定文档-->

九、在Home控制器下建立Action NewUserInfo 代码如下:

public ActionResult NewUserInfo()
    {
      IApplicationContext ctx = ContextRegistry.GetContext();
      IUserInfo lister = (IUserInfo)ctx.GetObject("NewUserInfo");
      ViewBag.msg = lister.ShowMeg();
      return View();
    }


十、前台添加显示 @ViewBag.msg 运行结果如下:

总结:IoC给我们带来了很多的方便,当我们觉得使用简单工厂不好的时候,可以用IoC来代替,而且大部分都支持AOP。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot接口如何对参数进行校验

    SpringBoot接口如何对参数进行校验

    这篇文章主要介绍了SpringBoot接口如何对参数进行校验,在以SpringBoot开发Restful接口时, 对于接口的查询参数后台也是要进行校验的,同时还需要给出校验的返回信息放到上文我们统一封装的结构中
    2022-07-07
  • Java之Pattern.compile函数用法详解

    Java之Pattern.compile函数用法详解

    这篇文章主要介绍了Java之Pattern.compile函数用法详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • Spring Boot参数校验及分组校验的使用教程

    Spring Boot参数校验及分组校验的使用教程

    在日常的开发中,参数校验是非常重要的一个环节,严格参数校验会减少很多出bug的概率,增加接口的安全性,下面这篇文章主要给大家介绍了关于Spring Boot参数校验及分组校验使用的相关资料,需要的朋友可以参考下
    2021-08-08
  • Java实现简易的分词器功能

    Java实现简易的分词器功能

    搜索功能是具备数据库功能的系统的一大重要特性和功能,生活中常见的搜索功能基本上都具备了分词搜索功能.然而ES功能固然强大,但对于学生或小项目而言整合起来太费人力物力,若是写个分词器就会使项目锦上添花,使其不仅仅是只能单关键词搜索的系统,需要的朋友可以参考下
    2021-06-06
  • 解析JPA的视图查询问题

    解析JPA的视图查询问题

    这篇文章主要是对JPA的视图查询问题进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2013-12-12
  • 解决logback的日志文件路径问题

    解决logback的日志文件路径问题

    这篇文章主要介绍了解决logback的日志文件路径问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • 手动构建springBoot启动器过程图解

    手动构建springBoot启动器过程图解

    这篇文章主要介绍了手动构建springBoot启动器过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Java 实现word模板转为pdf

    Java 实现word模板转为pdf

    这篇文章主要介绍了Java 实现word模板转为pdf的方法,帮助大家更好的理解和学习使用Java,感兴趣的朋友可以了解下
    2021-02-02
  • Java21虚拟线程实践

    Java21虚拟线程实践

    java21正式版发布了,为我们带来了很多新的特性,其中我最感兴趣的就是虚拟线程,本文主要介绍了Java21虚拟线程实践,感兴趣的可以;了解一下
    2023-10-10
  • SpringBoot中EasyExcel实现Excel文件的导入导出

    SpringBoot中EasyExcel实现Excel文件的导入导出

    这篇文章主要介绍了SpringBoot中EasyExcel实现Excel文件的导入导出,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10

最新评论