博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring.Net学习之简单的知识点(一)
阅读量:6035 次
发布时间:2019-06-20

本文共 3727 字,大约阅读时间需要 12 分钟。

1.Spring.Net是一个开源的应用程序框架,可以简化开发

主要功能
(1)实现控制反转(IOC/DI),也就是不要直接new,依赖于接口
(2)面向切面编程(AOP),就是向程序中利用委托注册事件
简单来说:Spring.Net是一个轻量级的控制反转和面向切面的容器框架。

2.Spring.Net提供的dll说明

Spring.Core.dll:包含Spring.Net框架基于的核心工具类,Spring.Net其他组件都要使用这里的类,是其他组件的基本核心
Spring.Aop.dll:Spring.Net的AOP框架
Spring.Web.dll:提供了对Web的支持
Spring.Web.Mvc3.dll:Spring.Net自己的Web框架
Common.Logging.dll:Spring.Net日志功能

3.Spring.Net的两个重要的容器类

IObjectFactory通常称为Object容器
IApplicationContext通常称为应用上下文。它的功能要多于IObjectFactory,如它可以加载外部的资源文件、可以自动进行AOP切面、可以识别自动代理的类等

区别:

IObjectFactory只有当需要获取一个对象时才会去创建。
IApplicationContext在启动时一次初始化所有的实例,可以自动识别代理类、可以识别自动加载等(推荐使用)

4.理解IOC和DI

IOC(Inversion of Control,控制反转),控制反转就是应用程序本身不负责依赖对象的创建及维护,依赖对象的创建和维护是由外部容器负责。这样控制权就由应用程序本身转移到了外部容器,控制权的转移就是所谓的反转。
DI(Dependency Injection,依赖注入)就是在运行期由外部容器动态的将依赖对象注入到组件中或是在运行期,由外部容器决定具体执行的类。

 

5.通过属性注入

注入值类型属性
给Object注入集合
给Object注入其他Object

6.通过构造函数注入

7.通过配置文件中实例的对象默认是单例的,可以进行设置singleton="false"
8.自动装配autowire="byName" autowire="byType"
根据属性名称去查找object中name相同的对象
根据类型去查找object中类型相同的对象

核心代码:

Web.config

Objects.xml

张三
张三1
张三2

WebForm1.aspx.cs

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using Spring.Context;using Spring.Objects.Factory;using SpringDemo.Models;namespace SpringDemo{    public partial class WebForm1 : System.Web.UI.Page    {        protected void Page_Load(object sender, EventArgs e)        {            //IObjectFactory factory = Spring.Context.Support.ContextRegistry.GetContext();            IApplicationContext context = Spring.Context.Support.ContextRegistry.GetContext();            IPerson stu1 = context.GetObject("XiaoLei") as Student;            Response.Write(stu1.Name+"
");//通过配置文件属性注入的名称 Response.Write(stu1.Pet.Name + "
");//通过配置文件属性对象注入 foreach (string name in stu1.Names) { Response.Write(name + "
"); //通过配置文件属性集合注入 } foreach (KeyValuePair
name in stu1.GirlFriends) { Response.Write(name.Key + "-----"+name.Value+"
"); //通过配置文件属性集合注入 } foreach (object obj in stu1.Hobits) { Response.Write(obj+"
"); //通过配置文件属性集合注入 } //构造函数注入 Car car = context.GetObject("car1") as Car; Response.Write(car.Name+" ----"+car.Price+"
"); //默认从配置文件中取出来的实例是单例的,可以进行设置 singleton="false" Car car1 = context.GetObject("car1") as Car; Response.Write((car==car1)+ "
"); //引用配置文件中的对象 Response.Write(car1.MyDog.Name+"
"); Car car2 = context.GetObject("car2") as Car; Response.Write(car2.MyDog.Name + "
"); } }}

 

 

源码链接:http://yunpan.cn/Q7sbQIiIRDZtV (提取码:b68c)

转载地址:http://mnohx.baihongyu.com/

你可能感兴趣的文章
Android 应用接入广点通统计API 方案
查看>>
安装 LuaSocket
查看>>
NEXUS7 学习
查看>>
zoj 3203 Light Bulb,三分之二的基本问题
查看>>
【转】idea 用maven骨架生成项目速度慢的问题
查看>>
OpenGL【2 坐标转换】
查看>>
linux内核内存管理(zone_dma zone_normal zone_highmem)
查看>>
移动端事件对象touches的误区
查看>>
ASP.NET State Server 服务 sessionState
查看>>
uinty3d导入错误问题解决
查看>>
CSS IE6/7/8, Firefox, Safari, Chrome, Opera Hack使用简要归纳(转)
查看>>
Swift - 滑块(UISlider)的用法
查看>>
Java虚拟机5:Java垃圾回收(GC)机制详解
查看>>
web网页的表单排版利器--960css
查看>>
poj3281-Dining ,最大流量,内置图
查看>>
jsp跳转后台代码页的简易方式~
查看>>
趁我酒醉后专车司机想要非礼我
查看>>
AngularJS学习总结
查看>>
ArcGIS制图之Subset工具点抽稀
查看>>
实现基于Task的异步模式
查看>>