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(); }
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; } }
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 配置结束 ******************-->
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(); }
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; } }
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>
8. Ändern Sie web.config und geben Sie „objects.xml“ als Auflösungsabhängigkeit an
<resource uri="~/Config/objects.xml" /><!--指定文档-->
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(); }
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!