Teilen Sie ein Beispiel für ein IoC-Einführungs-Tutorial

零下一度
Freigeben: 2017-06-24 09:54:03
Original
2103 Leute haben es durchsucht

Spring.Net umfasst Inversion of Control (IoC) und Aspect Orientation (AOP). In diesem Artikel geht es hauptsächlich um den Einstieg in IoC.

1. Erstellen Sie zuerst ein MVC-Projekt mit dem Namen SpringDemo und laden Sie dann Spring herunter (ich verwende Spring.Net NHibernate 4-Unterstützung)

2 Die drei wichtigsten Klassencodes von IUserInfo, UserInfo und Order lauten wie folgt:

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

3. Geben Sie den entscheidenden Schritt ein: Ändern Sie die Konfigurationsdatei. Ändern Sie direkt in web.config wie folgt:

<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 配置结束 ******************-->
Nach dem Login kopieren

Viertens Codetest, erstellen Sie einen neuen Controller. Der Code lautet wie folgt:

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

5. Fügen Sie @ViewBag.msg zur Rezeption hinzu. Die laufenden Ergebnisse sind wie folgt:

6 Wenn ich die Konfigurationsdatei trennen möchte, erstelle ich eine neue Klasse „NewUserInfo“ mit dem folgenden Code:

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;
        }
    }
Nach dem Login kopieren

7. Erstellen Sie „objects.xml“ unter der neuen Ordner „Config“ und legen Sie die Eigenschaften fest, um den Verzeichnisinhalt wie folgt zu generieren:

<?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>
Nach dem Login kopieren

8. Ändern Sie web.config und geben Sie „objects.xml“ als Auflösungsabhängigkeit an

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

9. Erstellen Sie die Aktion NewUserInfo unter dem Home-Controller. Der Code lautet wie folgt:

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

10 Die laufenden Ergebnisse sind wie folgt:

Zusammenfassung: IoC bringt uns viel Komfort, wenn wir das Gefühl haben, dass die Verwendung einer einfachen Fabrik nicht der Fall ist Gut, wir können stattdessen IoC verwenden und die meisten unterstützen AOP.

Wünsche dir viel Glück

Das obige ist der detaillierte Inhalt vonTeilen Sie ein Beispiel für ein IoC-Einführungs-Tutorial. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage