免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
Spring.net架構(gòu)示例(含Aop和Ioc)源碼

最近寫(xiě)了一個(gè)Spring.net的架構(gòu)。
一、架構(gòu)主圖

架構(gòu)圖的數(shù)據(jù)流程走向是:
UI層=》UILogic》=》Service》Business=》DataAccess
中間使用到的公共類庫(kù),如,Aop和Container

二、Default.aspx頁(yè)面代碼

<%@ Page Language="C#" AutoEventWireup="true"  Inherits="ST.Spring.UILogic.UserManage" %>    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"><title></title></head><body><form id="form1" runat="server"><div </div></form></body></html>

舉一個(gè)ioc配置示例:

<?xml version="1.0" encoding="utf-8" ?><objects xmlns="http://www.springframework.net" >  <description>An example that demonstrates simple IoC features.</description>  <!-- 環(huán)繞通知 -->  <object id="UserAdvice" type="ST.Spring.Aop.UserAdvice,ST.Spring.Aop"></object>  <!-- UserBll class -->  <object id="IUserBll" type="Spring.Aop.Framework.ProxyFactoryObject"><!-- 攔截目標(biāo) --><property name="target" ref="UserBll" /><!-- 具體通知 --><property name="interceptorNames">  <list><value>UserAdvice</value>  </list></property>  </object>  <object id="UserBll" type="ST.Spring.Business.UserBll,ST.Spring.Business">  </object> </objects>

IUserBll是接口名,繼承了是Spring.Aop.Framework.ProxyFactoryObject的ProxyFactoryObject類,被UserBll引用或者說(shuō)實(shí)現(xiàn)。UserBll繼承了ST.Spring.Business.UserBll類。

一句話,ioc就是為了在.cs業(yè)務(wù)類中,通過(guò)接口名創(chuàng)建實(shí)現(xiàn)對(duì)象。

var userBll = ObjectContainer.CreateObject<IUserBll>();

三、UILogic頁(yè)面的

using System;using System.Collections.Generic;using System.Linq;using System.Text;using ST.Spring.Container;using ST.Spring.DataModel;using ST.Spring.IService;namespace ST.Spring.UILogic{public class UserManage : System.Web.UI.Page{protected void Page_Load(object sender, EventArgs e){var userService = ObjectContainer.CreateObject<IUserService>();User result = userService.AddUser(new User() { UserName = "xqh", Sex = "男", Password = "123" });//Response.Write(user.Singleton() + "<br/>");Response.Write("添加用戶:" + (result != null ? "成功" : "失敗") + "<br />");////Response.Write(result.UserName + result.Sex + result.Password + "<br/>");//Response.Write(user.SendMsg());Response.End();}}}

四、IService.cs和Service.cs

using System;using System.Collections.Generic;using System.Linq;using System.Text;using ST.Spring.DataModel;namespace ST.Spring.IService{public interface IUserService{/// <summary>/// 添加用戶/// </summary>/// <param name="u"></param>/// <returns></returns>User AddUser(User u);/// <summary>/// 發(fā)送消息/// </summary>/// <returns></returns>string SendMsg();}}

using System;using System.Collections.Generic;using System.Linq;using System.Text;using ST.Spring.Container;using ST.Spring.DataModel;using ST.Spring.IBusiness;using ST.Spring.IService;namespace ST.Spring.Service{/// <summary>/// 用戶service/// </summary>public class UserService : IUserService{private IUserBll UserBll { get; set; }private string _msg;private string _constructor;//構(gòu)造函數(shù)注入public UserService(string constructor){this._constructor = constructor;}//通過(guò)屬性注入 相當(dāng)于替代了 IUser _user = new UserDAO把這個(gè)過(guò)程交給容器來(lái)處理/// <summary>/// 消息內(nèi)容通過(guò)屬性注入/// </summary>public string MsgInfo{get { return this._msg; }set { this._msg = value; }}/// <summary>/// 添加用戶/// </summary>/// <param name="u"></param>/// <returns></returns>public User AddUser(User u){var userBll = ObjectContainer.CreateObject<IUserBll>();return userBll.AddUser(u);}/// <summary>/// 發(fā)送消息/// </summary>/// <returns></returns>public string SendMsg(){return "注入的MsgInfo值是:" + MsgInfo + "<br/>" + "_constructor通過(guò)構(gòu)造函數(shù)注入的值:" + _constructor;}}}

五、Aop類UserAdvice.cs

using System;using System.Collections.Generic;using System.Linq;using System.Text;using AopAlliance.Intercept;namespace ST.Spring.Aop{/// <summary>/// 環(huán)繞通知/// </summary>public class UserAdvice : IMethodInterceptor{#region IMethodInterceptor 成員public object Invoke(IMethodInvocation invocation){string methodName = invocation.Method.Name;//可以攔截方法進(jìn)行日志、權(quán)限等操作if (methodName == "AddUser"){//throw new Exception(invocation.Method.Name);}object returnValue = invocation.Proceed();//return "被攔截的方法:" + methodName + "<br/>" + "返回的值:" + returnValue.ToString();return returnValue;}#endregion}}

六、IOC容器創(chuàng)建類ObjectContainer.cs

using System;using System.Collections.Generic;using System.Linq;using System.Text;using Spring.Context;using Spring.Context.Support;namespace ST.Spring.Container{public static class ObjectContainer{//使用自定義的配置文件---獲取容器private static IApplicationContext Ctx { get; set; }public static TObject CreateObject<TObject>(){Ctx = new XmlApplicationContext(string.Format("~/SpringConfig/{0}.xml", typeof(TObject).Assembly.GetName().Name));var str = string.Empty;var t = typeof(TObject).FullName;if (t.LastIndexOf('.') > 0){str = t.Substring(t.LastIndexOf('.') + 1, t.Length - t.LastIndexOf('.') - 1);}return (TObject)Ctx.GetObject(str);}}}

創(chuàng)建方法如下:

var userService = *OBJECTCONTAINER.CREATEOBJECT<IUSERSERVICE>();*User result = userService.AddUser(new User() { UserName = "xqh", Sex = "男", Password = "123" });

下載:http://pan.baidu.com/s/1hqCGuFU

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
漫畫(huà)|Spring AOP的底層原理是什么?
spring ioc 原理 spring aop原理 - 本事記的富偉徐 - JavaEy...
SOA實(shí)踐 -- 使用IoC和AOP重構(gòu)SOA應(yīng)用
我理解的IoC和AOP
通俗的解釋Spring中IOC, DI, AOP
【Spring】
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服