学习笔记41_Spring.Net
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的更多相关文章
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- seaJs学习笔记2 – seaJs组建库的使用
原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
- CSS学习笔记
CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...
- HTML学习笔记
HTML学习笔记 2016年12月15日整理 Chapter1 URL(scheme://host.domain:port/path/filename) scheme: 定义因特网服务的类型,常见的为 ...
- DirectX Graphics Infrastructure(DXGI):最佳范例 学习笔记
今天要学习的这篇文章写的算是比较早的了,大概在DX11时代就写好了,当时龙书11版看得很潦草,并没有注意这篇文章,现在看12,觉得是跳不过去的一篇文章,地址如下: https://msdn.micro ...
随机推荐
- 计算机视觉(二)-opencv之createTrackbar()详解
摘要: 我学习openCV3看的是<学习openCV3>这本书,很厚的一本,不知道是不是因为自己看的还不是很多,个人觉得里面的有些重要函数讲的不是很详细,比如createTrackbar( ...
- Word文档操作知识
Word文档操作知识 #持续更新 本次更新时间:2019-03-06 14:34 一.换行时字体空间过大 问题情景:当我们编写中文的文档时,中间插入了西方的字体或符号,在以它为行尾换行时: 会出现字体 ...
- Zygote家的大儿子 —— SystemServer
本文基于 Android 9.0 , 代码仓库地址 : android_9.0.0_r45 文中源码链接: SystemServer.java SystemServiceManager.java Sy ...
- 浅谈分布式事务与TX-LCN
最近做项目使用到了分布式事务,下面这篇文章将给大家介绍一下对分布式事务的一些见解,并讲解分布式事务处理框架TX-LCN的执行原理,初学入门,错误之处望各位不吝指正. 什么情况下需要使用分布式事务? 使 ...
- JVM Java字节码的角度分析switch的实现
目录 Java字节码的角度分析switch的实现 引子 前置知识 一个妥协而又枯燥的方案 switch的实现 回顾历史 字节码分析 其他实现方式? Java字节码的角度分析switch的实现 作者 k ...
- Pycharm(Mac版)快捷键操作篇
Mac键盘符号和修饰键说明 ⌘ Command ⇧ Shift ⌥ Option ⌃ Control ↩︎ Return/Enter ⌫ Delete ⌦ 向前删除键(Fn+Delete) ↑ 上箭头 ...
- UDP方式的传输
UDP 部分内容需要查文档学习,我们需要了解下面的两个类:java.net.DatagramSocket和java.net.DatagramPacket java.net.DatagramSocket ...
- 利用pyecharts将数据可视化
可视化展示在数据分析领域中是一个至关重要的点,好的可视化展示对我们的结果分析有更好的支持作用. 一.问题 在数据分析的时代里面我们需要将数据的可视化展现出来,更加方便用户的观察.如下图 有些时候我们需 ...
- Python_深拷贝和浅拷贝
深拷贝与浅拷贝 import copy v = 123 v1 = copy.copy(v) #浅拷贝 v2 = copy.deepcopy(v) #深拷贝 **拷贝只拷贝可变数据类型,浅拷贝只拷贝第一 ...
- PHP会话机制---session的基本使用
登录网站后,在每个网页都能拿到用户信息 (1) 使用超链接传递用户名,这样太繁琐了,不建议使用 . (2) 使用数据库,每打开一个页面都查询一次用户信息表,这样网页加载速度变慢,用户体验变差. (3) ...