• 学习笔记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放到运行目录下即可

  • 相关阅读:
    RedGlove 权限管理系统(1)权限概述
    SPQuery查询语法简要说明
    DataGridView使用技巧大全
    实战asp.net MVC+ADO.NET EntityFramework
    RedGlove 权限管理系统(2)功能模块设计
    C# 如果何从线程中操作控件
    PageHelper 类 和 ValidateHelper 类
    字符串帮助类
    XMLHelper 类
    Android中截取当前屏幕的功能
  • 原文地址:https://www.cnblogs.com/pylblog/p/7182461.html
Copyright © 2020-2023  润新知