IoC, DI,Spring.net
IoC : Inversion of Control , 控制反转,就是创建对象(实例)的权利由开发人员自己控制New转到了由容器来控制。实现了解耦。
DI: Dependency Injection, 依赖注入,就是通过容器来创建对象的时候,在对象初始化时可以给一些属性、构造方法的参数等注入默认值
Aop: 面向切面的编程,相当于MVC里面的过滤器
Unity: .net平台下的开源项目,用来实现IoC和DI
Spring.net: 开源项目, IoC、DI是此项目的两个重要的特点, 是从java中的spring移植过来的。使用时,需要参考Spring.net 文档
属性设置
代码示例:
http://git.oschina.net/rocky132/sprint.net_ioc_di
http://git.oschina.net/rocky132/heima8_oa
日志并发处理
代码:
1)模拟异常
public ActionResult Test()
{
int a = 2;
int b = 0;
int c = a / b;
return Content(c.ToString());
}
2) 自定义异常过滤器
public class MyExceptionAttribute:HandleErrorAttribute
{
public static Queue<Exception> ExceptionQueue = new Queue<Exception>();
public override void OnException(ExceptionContext filterContext)
{
base.OnException(filterContext);
ExceptionQueue.Enqueue(filterContext.Exception);//将异常信息添加到队列中。
filterContext.HttpContext.Response.Redirect("/Error.html");
}
}
3) 注册过滤器
filters.Add(new MyExceptionAttribute());
4) 设置程序启动后 启动线程循环 从队列中取出异常 写日志
string fileLogPath = Server.MapPath("/Log/");
//WaitCallback
ThreadPool.QueueUserWorkItem((a) =>
{
while (true)
{
if (MyExceptionAttribute.ExceptionQueue.Count > 0)
{
Exception ex = MyExceptionAttribute.ExceptionQueue.Dequeue();//出队
string fileName = DateTime.Now.ToString("yyyy-MM-dd") + ".txt";
File.AppendAllText(fileLogPath + fileName, ex.ToString(), System.Text.Encoding.Default);
//ILog logger = LogManager.GetLogger("errorMsg");
//logger.Error(ex.ToString());
}
else
{
Thread.Sleep(3000);//如果队列中没有数据,休息避免造成CPU的空转.
}
}
}, fileLogPath);
代码示例:
http://git.oschina.net/rocky132/logwrite_queue
IoC, DI,Spring.net的更多相关文章
- 零基础学习java------37---------mybatis的高级映射(单表查询,多表(一对一,一对多)),逆向工程,Spring(IOC,DI,创建对象,AOP)
一. mybatis的高级映射 1 单表,字段不一致 resultType输出映射: 要求查询的字段名(数据库中表格的字段)和对应的java类型的属性名一致,数据可以完成封装映射 如果字段和jav ...
- 1.Ioc&DI和Spring
1.面向对象回顾和案例 面向对象程序设计:1 2 3 4 案例分析: 需求分析: 报表功能: 报表服务类,检索数据,并生成图标 报表生成器类,生成不同格式的报表文件,例如PDF格式.H ...
- C# IOC DI 学习
之前一直不理解IOC DI,今天使劲研究了下,感觉朦朦胧胧有点感觉了,网上的这篇文章对我的有很大的启发 http://www.cnblogs.com/jin-yuan/p/3823559.html 我 ...
- Spring基础[IOC/DI、AOP]
一.Spring作用:管理项目中各种业务Bean(service类.Dao类.Action类),实例化类,属性赋值 二.Spring IOC(Inversion of Control )控制反转,也被 ...
- spring+IOC+DI+AOP优点分析(一)
Spring是什么: Spring是一个轻量级的DI和AOP容器框架. 说它轻量级有一大部分原因是相对与EJB的(虽然本人从没有接触过EJB的应用),重要的是,Spring是非侵入式的,基于sprin ...
- spring 依赖注入(IOC DI)
依赖注入(IOC DI) 依赖注入的两种方式: 1. set注入 Spring要求使用set注入方式的时候,Bean需要提供一个无参数的构造方法.并提供一个属性的setter方法.例如: packag ...
- spring ioc DI 理解
下面是我从网上找来的一些大牛对spring ioc和DI的理解,希望也能让你对Spring ioc和DI的设计思想有更进一步的认识. 一.分享Iteye的开涛对Ioc的精彩讲解 Ioc—Inversi ...
- spring框架--IOC容器,依赖注入
思考: 1. 对象创建创建能否写死? 2. 对象创建细节 对象数量 action 多个 [维护成员变量] service 一个 [不需要维护公共变量] dao 一个 [不需要维护 ...
- Spring+IOC(DI)+AOP概念及优缺点
Spring pring是一个轻量级的DI和AOP容器框架. 说它轻量级有一大部分原因是相对与EJB的(虽然本人从没有接触过EJB的应用),重要的是,Spring是非侵入式的,基于spring开发的应 ...
随机推荐
- 洛谷P4052 [JSOI2007]文本生成器 AC自动机+dp
正解:AC自动机+dp 解题报告: 传送门! 感觉AC自动机套dp的题还挺套路的,,, 一般就先跑遍AC自动机,然后就用dp dp的状态一般都是f[i][j]:有i个字符,是ac自动机上的第j个节点, ...
- 【PyQt5-Qt Designer】QSpinBox-微调框
QSpinBox-微调框 QSpinBox类提供了一个微调框小部件. QSpinBox被设计为处理整数和离散值集合(例如,月份名称):使用QDoubleSpinBox 可以作为浮点数的调整. QSpi ...
- 10.3-uC/OS-III内部任务管理(TCB)
任务控制块 TCB 1.任务控制块是被uC/OS-III用于维护任务的一个结构体.每个任务都必须有自己的 TCB. uC/OS-III 在 RAM 中分配 TCB.当调用uC/OS-III提供的与任务 ...
- 如何快速REPAIR TABLE
早上到公司,刚准备吃早餐,手机响了,一看是服务器自动重启了.好吧,准备修复数据吧.游戏服的游戏日志使用的是MyISAM.众所周知,MyISAM表在服务器意外宕机或者mysqld进程挂掉以后,MyISA ...
- cd 命令
[root@localhost ~]# cd # 进入当前用户的家目录 [root@localhost ~]# cd ~ # 进入当前用户的家目录 [root@localhost ~]# cd /da ...
- 记录关于vs2008 和vs2015 的报错问题
出现了 VS2008无法创建项目,无法打开项目的情况,提示这个注册表键值有问题 HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ MSBuild \ ToolsV ...
- MySQL 5.7 的SSL加密方法
MySQL 5.7 的SSL加密方法 MySQL 5.7.6或以上版本 (1)创建证书开启SSL验证--安装opensslyum install -y opensslopenssl versionOp ...
- 微星笔记本每次都进bios
解决方法 bios中更改启动模式,要更改为LEGACY
- 20180318 一个VS2015运行DataTable问题
1. 环境VS 2015 社区版,使用"DataTable" 为了即使查看DataTable中的数据,点击放大镜 ,加载提示错误. 解决方案: 第一步: 第二步: “选项” -- ...
- mac 安装yarn失败
转载:https://www.jianshu.com/p/d4298239e1e4, yarn 下载一些包的时候总是报错,在控制台执行下面的语句后可以下载,具体原因尚未清楚待研究 git config ...