Partager un exemple de didacticiel d'introduction à l'IoC

零下一度
Libérer: 2017-06-24 09:54:03
original
2103 Les gens l'ont consulté

Spring.Net inclut l'inversion de contrôle (IoC) et l'orientation d'aspect (AOP). Cet article parle principalement de la prise en main d'IoC.

1. Créez d'abord un projet MVC nommé SpringDemo, puis utilisez NuGet pour télécharger Spring (j'utilise le support Spring.Net NHibernate 4)

2. , les trois principaux codes de classe de IUserInfo, UserInfo et Order sont les suivants :

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

3. Entrez dans l'étape critique : modifier le fichier de configuration. Modifiez directement dans web.config comme suit :

<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 配置结束 ******************-->
Copier après la connexion

Quatrièmement, testez le code, créez un nouveau contrôleur, le code est le suivant :

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

5. Ajoutez @ViewBag.msg à la réception. Les résultats en cours sont les suivants :

6. Je le fais si je veux séparer le fichier de configuration ? Pour tester l'effet, créez une nouvelle classe NewUserInfo avec le code suivant :

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;
        }
    }
Copier après la connexion

7. Créez object.xml sous le nouveau dossier Config et définissez les propriétés pour générer le contenu du répertoire comme suit :

<?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>
Copier après la connexion

8. Modifiez web.config et spécifiez objects.xml comme dépendance de résolution

<resource uri="~/Config/objects.xml" /><!--指定文档-->
Copier après la connexion

9. Créez l'action NewUserInfo sous le contrôleur Home Le code est le suivant :

public ActionResult NewUserInfo()
        {
            IApplicationContext ctx = ContextRegistry.GetContext();
            IUserInfo lister = (IUserInfo)ctx.GetObject("NewUserInfo");
            ViewBag.msg = lister.ShowMeg();return View();
        }
Copier après la connexion

10. Ajoutez @ViewBag.msg au premier plan. desk. Les résultats en cours sont les suivants :

Résumé : IoC nous apporte beaucoup de commodité quand nous pensons qu'utiliser une simple usine n'est pas. bien, nous pouvons utiliser IoC à la place, et la plupart d'entre eux prennent en charge AOP.

Je vous souhaite bonne chance

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal