【ITOO】——Spring.net基础及简单使用_王萌萌萌的博客-程序员宅基地

技术标签: ------【ITOO】  spring.net  ♫ 经验汇集  


    概述

    通过Spring.NET,我们可以用统一且透明的方式来配置应用程序。Spring.NET的重点是为中间层提供声明式事务管理,以及一个功能齐全的ASP.NET扩展框架。

    Spring.NET是非侵入式的,代码对框架本身不会产生任何依赖。它能够提供很多方面的功能,例如控制反转(Inversion of Control,英文缩写为IoC)、依赖注入(Dependency Injection,英文缩写DI)、面向方面编程(AOP)、数据访问抽象, 以及ASP DOTNET集成等。


    关键词

    IOC(控制反转,Inversion of Control)

    就是创建对象的权利由开发人员自己控制New,转到了由容器来控制;

    DI(依赖注入,Dependency Injection)

    就是在通过容器来创建对象的时候,在对象的初始化是可以给一些属性、构造方法的参数等诸如默认值(可以是复杂的类型)

    AOP——权限校验——日志处理。


    实例说明

    如下是小demo中的配置文件部分:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <sectionGroup name="spring">
      <section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/>
      <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" />
    </sectionGroup>
  </configSections>
  <spring>
    <context>
      <resource uri="config://spring/objects"/>
      
      <!--关联自己添加的services.xml文件,所使用资源来自services.xml-->
      <!--services.xml文件属性设置为“始终复制”,每次运行都把services.xml复制到debug-->
      <resource uri="file://services.xml"/>

    </context>
    <objects xmlns="http://www.springframework.net">
      <!--description>An  example that demonstrates simple IoC features.</description>
        <object name="UserInfoService"      type="CZBK_ItcastOA.SpringNet.UserInfoService, CZBK ItcastOA.SpringNet">
          --><!-- 为UserInfoService添加属性设置 --><!--
          <property name="UserName" value="zhangsan"/>
          --><!--value为属性值,ref关联object,Person类--><!--
          <property name="Person" ref="Person"/>
      </object>
      <object name="Person"        type="CZBK_ItcastOA.SpringNet.Person, CZBK ItcastOA.SpringNet">
        <property name="Age" value="16"/>
      </object>-->
    </objects>
  </spring>
</configuration>

    为了能够实践Spring.net,我们可以添加一个XML文件,将配置文件中的objects节点中的内容全部复制到新添加的XML文件中,对应到以上代码,小编先添加了一个services.xml文件,以下是services中的所有内容:

<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net">
  <description>An  example that demonstrates simple IoC features.</description>
  <object name="UserInfoService"      type="CZBK_ItcastOA.SpringNet.UserInfoService, CZBK ItcastOA.SpringNet">
    <!-- 为UserInfoService添加属性设置 -->
    <property name="UserName" value="zhangsan"/>
    <!--value为属性值,ref关联object,Person类-->
    <property name="Person" ref="Person"/>
  </object>
  <object name="Person"        type="CZBK_ItcastOA.SpringNet.Person, CZBK ItcastOA.SpringNet">
    <property name="Age" value="16"/>
  </object>
</objects>

    当然原配置文件中的objects节点要保留,只是节点中的所有内容可以提取出到services中。

    另外还要在原配置文件中添加关联,获取service中的资源:

<resource uri="file://services.xml"/>

    遇上步骤完成之后,还有一个地方需要修改,就是将services.xml的文件属性设置为“始终复制”,这样一来,程序运行就不会出现找不到文件的问题了!


    为什么要把objects中的内容抽出来呢?这不用说大家也明白。大项目的开发总是会有多人参与的,动用代码那是必然的,但配置文件只有一个的情况下,如果objects写在配置文件中,那要么会造成不必要的冲突,要么就会耽误开发进度。但如果把objects提出来,并按照需求添加多个XML,各个模块各自动用各自的xml文件,这样一来,一系列棘手的问题就解决啦。



版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u013034793/article/details/51931526

智能推荐

NSStringDrawingOptions_yinachong的博客-程序员宅基地

NSStringDrawingTruncatesLastVisibleLine:如果文本内容超出指定的矩形限制,文本将被截去并在最后一个字符后加上省略号。如果没有指定NSStringDrawingUsesLineFragmentOrigin选项,则该选项被忽略。NSStringDrawingUsesLineFragmentOrigin:绘制文本时使用 line fragement or

条件注解@ConditionalOnBean失效原因_zhm_sky的博客-程序员宅基地_conditionalonbean不生效

测试环境(配置类)@Import({User.class,Pet.class})@Configuration(proxyBeanMethods = true)public class MyConfig { @Bean @ConditionalOnBean(name = "cat") public User user(){ return new User("航书", 12); } @Bean("cat") public

一重指针、二重指针做函数参数的深刻分析(虽然很基础,但要深刻理解)_ShenHang_的博客-程序员宅基地

一重指针做函数参数#include&lt;iostream&gt;using namespace std;void change(int *p){ *p = 20; p++; cout &lt;&lt; p &lt;&lt; endl;}int main() { int a = 10; change(&amp;a); cout &lt;&lt; &amp;a &lt;&lt...

java设置图片点击渐变透明,图片实现渐变/透明效果_weixin_39569753的博客-程序员宅基地

众所周知,图片等一些盒子都可以利用opacity属性来设置不透明度,但是前两天我朋友忽然给我一个截图,截图效果如下图中红框圈住的位置图片或者说摄像头采集的画面出现了渐变到透明,可以清楚的看到可以看到后面小哥的胳膊,然后问我如何实现这种效果,这下把我难住了(呵 天天给我出难题),我开始在个大论坛开始寻找解决方案;忽然在前天,日常逛论坛时看到一个文字投影的效果,而后忽然灵机一动就想,能不能变相的实现前...

java笔记_笑容温暖城寨的博客-程序员宅基地

安卓课的Java扩展笔记包类命名规范总结输出换行与不换行mian方法中的args参数Math类快捷输出语句static关键字定义无参方法定义带返回值方法包package com.eoe.basic.day01;//包名 在java当中用.表示windos中的/,一般格式:com.公司名.项目名.业务模块名称例如:com.sina.crm.user类命名规范总结1、java中可以有多个类2、java中可以有多个类,但是最多只有一个类的类名和文件名相同3、如果一个类被public修饰,那该类

一、网络游戏架构的前世今生(2)_王元恺David的博客-程序员宅基地

网络游戏架构演进史,优化游戏网络,自定义网络协议

随便推点

fineui mysql_FineUI 相关_卖家胖蝌蚪的博客-程序员宅基地

FineUI 开源版(原ExtAsp.Net)Last updated:2017-03SURFSKYhttp://pan.baidu.com/share/home?uk=170857326#category/type=0---------------------------------------------------配置&amp;预设http://fineui.com/demo/#/demo/...

手把手教你使用FineUI+动软代码生成器开发一个b/s结构的取送货管理信息系统(附源码)之开篇_编程鸭的博客-程序员宅基地

一 本系列随笔概览及产生的背景近阶段接到一些b/s类型的软件项目,但是团队成员之前大部分没有这方面的开发经验,于是自己选择了一套目前网上比较容易上手的开发框架(FineUI),计划录制一套视频讲座,来讲解如何利用FineUI快速开发一个小型的b/s结构的管理系统,已达到帮助团队成员快速掌握b/s结构信息系统的开发方法。源码位置:https://github.com/kamiba/FineU...

[原创]FineUI秘密花园(一) — 为什么选择FineUI?_weixin_33778778的博客-程序员宅基地

首先来看看FineUI是什么? FineUI 是一组基于 ExtJS 的专业 ASP.NET 控件库,拥有原生的 AJAX 支持和华丽的 UI 效果。 FineUI 的使命是创建没有 JavaScript,没有 CSS,没有 UpdatePanel,没有 ViewState,没有 WebServices 的网站应用程序。   从这段官方描述中,我们看到了三个信息点: ...

FineUI布局应用(二)_weixin_30767921的博客-程序员宅基地

一、FineUI页面布局分为 1、Fit布局 1 &lt;f:Panel ID="Panel1" Title="布局Fit(Layout=Fit)" runat="server" Layout="Fit" Height="300px" EnableFrame="true" EnableCollapse="true" 2 BodyPa...

[蓝桥杯][2019年第十届真题]修改数组_深夜面包的博客-程序员宅基地

题目链接:修改数组解题思路:用并查集思路,如果一个数的父节点就是当前数的位置,如果标记下一个数值一样的数的位置+1#include&lt;bits/stdc++.h&gt;#define x first#define y second#define mem1(h) memset(h,-1,sizeof h)#define mem0(h) memset(h,0,sizeof h)#define mcp(a,b) memcpy(a,b,sizeof b)using namespace std

GO语言博客系统——(一、基础部分)_深夜学习家的博客-程序员宅基地_go 博客系统

目录前言一、简单go web程序1.简单程序2.注意点二、路由1.路由比较2.请求路径正则三、中间件总结前言菜鸡自留地,如有错误请指正谢谢。一、简单go web程序1.简单程序package mainimport ( "fmt" "net/http")func handlerFunc(w http.ResponseWriter, r *http.Request) { fmt.Fprint(w, "&lt;h1&.