zoukankan      html  css  js  c++  java
  • Spring.Net的快速应用

    前奏:

     spring.net(从java里面的spring移植过来的)  而Unity(.net自带的实现Ioc和DI功能的开源项目)

    主要功能:{
    IoC: Inversion of Control
    控制翻转:就是创建对象的权利由开发人员自己控制New,转到由容器来控制。第三方容器创建对象,我们只需要调用容器。(类比抽象工厂)


    DI:Dependency Injection
    依赖注入:通过容器创建对象的时候,在对象初始化是可以给一些属性,构造方法的参数等注入默认值。初始值

    Aop:面向切面编程,相当于MVC里面的过滤器

    }

    参考:spring.net的帮助文档中有Ioc快速入门。

    开始实现Ioc和DI:  Spring.net提供的容器是IApplicationContext

      第一步:引用DLL
      Spring.Core.dll(主要)  还有就是如果要实现Aop,再引用Aop的dll。spring.net 中用到了日志是 Common.Logging.dll也需要引用一下。

      第二步:写配置文件,指定要new的命名空间和程序集

          (1)配置文件中初始化容器IApplicationContext   //创建容器的方法有很多种

            <configuration>

              <configSections>

                 <sectionGroup name="spring">

                    <section name="context" type="Spring.Context.Support.ContextHandler , Spring.core"></section>

                    <section name="objects"    //说的就是下面名字是objects的字节。 type="Spring.Context.Support.DefaultSectionHandler , Spring.core"></section>

                 </sectionGroup>

              </configSections>

              <spring>

                <context>

                  <resource uri="" />

                </context>

                <objects xmlns="http://www.springframework.net">    //既然加s了,说明里面可以有多个。看你要对那个类创建实例了。  

                  <object name=""  type="命名空间.类名+,+程序集名 "></object>   //name所指定的就是id.代码中通过id从IApplicationContext中请求所定义的对象。

                  <description></description>

                </objects>                       

              </spring>

            </configuration>

          (2)获取对象

            方法{

                IApplicationContext ctx=contextRegistry.GetContext(); //读取配置文件创建出容器

                类名或接口  na=(强转类名或接口) ctx.Getobject("配置文件中object的name");  //拿字节。对类new出对象,因为这个配置中指定的类可能继承了接口。

              }

    //好处:比如说以后我们换成了另外一个业务,只要改配置文件就行了。

          (3)DI的实现:

            把配置文件中<object>节点看成一个类里面可以加属性节点

              <property name=""  value="" />  这里的name就是类中具体的属性。value是值

             但是如果这个属性类型是另一个自己声明的类(这个类中还有自己的属性),就不能用value直接赋值了。

            所以就再声明一个<object name="objectName"> property属性赋值 </object>配置的是自己定义类的类型。然后

              <property name="属性名"  ref="objectName" />让它关联定义的object

    总结:就是当属性的类型是一个复杂类型的时候不能直接赋值,而是ref到另一个object,为另一个object的属性赋值。

          

        

     

  • 相关阅读:
    nginx 过滤了自定义的请求头参数
    Mysql5.7查看已经执行的sql语句
    Reids5 持久化
    JS 格式化时间,转成 几天前,几个月前
    个人小镜像站点
    记录一次清理Redis 病毒程序 kdevtmpfsi
    laravels 热重启
    Redis 布隆器安装和简单实现
    Redis Zset类型跳跃表算法实现(JAVA)
    Redis5 基于Lua实现分布式排它锁
  • 原文地址:https://www.cnblogs.com/liuwenxu/p/6409151.html
Copyright © 2011-2022 走看看