Spring.Net:由容器负责创建对象,容器读取配置文件来初始化对象,配置文件须符合 Spring.Net范式;

准备材料: Common.Loggin.dll,Spring.Core.dll

第一步:配置app.config,一般可以去网上找一个标准的Spring.net配置文件看看

<Spring>

  <context>

    <resource uri="config://spring/objects">//说明容器的所有的对象在哪里配置的

    <resource uri="file://Dals.xml">//此配置文件,也要放在app.config的统一目录下,而且文件也长得比较特殊

注意:对于配置文件的生成操作,如果以文件的方式,要对此文件的生成操作为嵌入资源或者始终生成

     <resource uri="assembly://MyAssembly/projectName(一般也是程序集名)/xxxx.xml">//以程序集的xml方式

  </context>

  <objects xmlns="http://......">

  <description>....</...>

  <object name="一般为类型名" type ="namespace.xxxx.类名(类的全名称),namespace(所在程序集名称) " ></..>

  </objects>

</<Spring>

第二步:使用容器创建实例

IApplicationContext ctx = ContextRegistry.GetContext();//其实就是程序集读取配置文件,创建Context

var dal = ctx.GetObject("类型名(name)") as namespace.xxxx.I类名;//其实一般要as一个接口类型,内部其实是程序集读取配置文件,在后边反射创建实例。

***就是由配置文件,决定创建什么样的,实现了某接口的实例

***所以配置文件中,要写得有规律,尽量能达到用查找/替换能一键替换的

***其他配置文件写法

<objects xmlns="http://....."  xmlns:xsi="http://www.w3.org/...."  xis:schemaLocation = "http://.....">

  <object id="..."  type="..."></object>

  <object id="..."  type="..."></object>

</objects>

Spring.Net注入方式:

属性注入:

<objects>

  <object name="xxtype1"  type="xxx.xxx.xxxtype">

  <object name="xxtype"  type="xxx.xxx.xxxtype">

    <property name="Name"  value="xxxxx">//简单属性的配置

    <property name="复杂属性" ref="xxtype1"/>//复杂属性,与上边的xxxtype1相关联

   </object>

<objects>

构造函数注入:

<object name="..." type="...">

<constructor-arg index="0" value="xxx">//给构造函数的第一个参数注入,一般情况下尽量很少用

</object>

****如果不使用构造函数,使用工厂创建的话,也可以配置

<objects>

  <objcet name="Factory1" type="类全名,程序集名" singleton="true"></..>//单列模式

  <object  name ="xxxdal"  type="类全名,程序集名" singleton="false" factory-method="getDal"  factoryobject="Factory1"></..>

</objects>

********Spring.Net就是通过配置文件,实现各个项目层的彻底分离,运行的时候通过读取配置文件,程序集+类全名反射+接口定义,达到各个对象实例化,来实现各层项目之间的全分离,甚至不用项目之间的引用,只要生成的dll放到运行目录下即可

学习笔记41_Spring.Net的更多相关文章

  1. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  2. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  3. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  4. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

  5. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  6. seaJs学习笔记2 – seaJs组建库的使用

    原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...

  7. CSS学习笔记

    CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...

  8. HTML学习笔记

    HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...

  9. DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记

    今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...

随机推荐

  1. 夯实Java基础系列17:一文搞懂Java多线程使用方式、实现原理以及常见面试题

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下 ...

  2. 主动降噪技术(ANC)的前生今世–行业分析

    一 原始玩家 1978年,创始人Amar G. Bose博士在从欧洲飞往波士顿的飞机上,发现飞机引擎的噪音扫净了他戴耳机欣赏音乐的兴致.这激发了他在BOSE公司进行一项消噪科技的研究.弹指之间,十年过 ...

  3. java面试宝典2019(好东西先留着)

    java面试宝典2019 1.meta标签的作用是什么 2.ReenTrantLock可重入锁(和synchronized的区别)总结 3.Spring中的自动装配有哪些限制? 4.什么是可变参数? ...

  4. 浅谈Java的内存模型以及交互

    本文的内存模型只写虚拟机内存模型,物理机的不予描述. Java内存模型 在Java中,虚拟机将运行时区域分成6中,如下图:              程序计数器:用来记录当前线程执行到哪一步操作.在多 ...

  5. zend studio 13.6 导入项目及其他设置

    1. 先创建一个新的项目:file -> new -> project 2. 创建新项目之后,在左侧的项目目录上右键 -> import 到此导入项目, 完成! 设置编码utf-8 ...

  6. 安装vant2.2.7版本报错These dependencies were not found: vant/es/goods-action-big-btn in ./src/config/vant.config.js......

    一.问题 前天,在使用vant的checkbox复选框的时候,注意到新增加一个全选功能,通过 ref 可以获取到 CheckboxGroup 实例并调用实例方法.于是我就想用这个,但是按照上面的示例写 ...

  7. 程序员需要了解的硬核知识之CPU

    大家都是程序员,大家都是和计算机打交道的程序员,大家都是和计算机中软件硬件打交道的程序员,大家都是和CPU打交道的程序员,所以,不管你是玩儿硬件的还是做软件的,你的世界都少不了计算机最核心的 - CP ...

  8. Java中的接口(什么是接口,接口的好处,具体的使用)

    1.什么是接口? 官方概述: 在java语言中,接口不是类,而是对类的一组需求描述,这些类要遵从接口描述的统一格式进行定义. 这种技术主要用来描述类具有什么功能,而并不给出每个类的具体实现. Bala ...

  9. C# 委托 (一)—— 委托、 泛型委托与Lambda表达式

    C# 委托 (一)—— 委托. 泛型委托与Lambda表达式 2018年08月19日 20:46:47 wnvalentin 阅读数 2992   版权声明:此文乃博主之原创.鄙人才疏,望大侠斧正.此 ...

  10. [Luogu1379]八数码难题

    题目描述 在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字.棋盘中留有一个空格,空格用0来表示.空格周围的棋子可以移到空格中.要求解的问题是:给出一种初始布局(初始状态)和目标布局(为了 ...