依赖注入:属性和构造函数的注入

一个简单的Demo:

IUserInfoDal接口:

public  interface IUserInfoDal
{
void Show();
string Name { get; set; }
}
}

UserInfoDal继承IUserInfoDal:

 public class UserInfoDal:IUserInfoDal
{ public void Show()
{
Console.WriteLine("hellow world");
}
}

建立SpringNetDemo的控制台应用程序:

static void Main(string[] args)
{
//IUserInfoDal userInfoDal = new UserInfoDal();
//userInfoDal.Show(); //容器来 创建UserInfoDal实列 //第一步 初始化容器
IApplicationContext ctx = ContextRegistry.GetContext(); IUserInfoDal dal = ctx.GetObject("UserInfoDal") as IUserInfoDal;
dal.Show(); Console.ReadKey();
}

在App中进行配置:(<configuration> 节点中

 <!--sectionGroup  中的name要与 下面的标签名字一样 spring-->
<configSections>
<sectionGroup name="spring">
<!--spring 分成两个子块-->
<section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/>
<section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" />
</sectionGroup>
</configSections>

对sectionGroup的name进行配置:

<spring>
<!--Spring.Net对象容器的配置-->
<context>
<!--容器里面的所有的对象在哪里配置的?--> <!--使用xml文件的配置-->
<!--<resource uri="file://Dals.xml"/>-->
<!--使用程序集的配置-->
<!--<resource uri="assembly://SpringNetDemo/SpringNetDemo/Dals.xml"/>--> <resource uri="config://spring/objects"/> </context>
<!--objects:配置的容器的里面的对象的-->
<objects xmlns="http://www.springframework.net">
<description>An example that demonstrates simple IoC features.</description> <!--名字为类名-->
<!--<object name="UserInfoDal" type="SpringNetDemo.UserInfoDal, SpringNetDemo">-->
<object name="UserInfoDal" type="SpringNetDemo.EFUserInfoDal, SpringNetDemo">
<!--属性的配置-->
<property name="Name" value="Spring牛"/>
</object>
<!-- 把UserInfoDal属性注入到UserInfoServce-->
<!--<object name="UserInfoServce" type="SpringNetDemo.UserInfoServce, SpringNetDemo">
<property name="UserInfoDal" ref="UserInfoDal"/>
</object>--> </objects>
</spring>

XMl文件中的配置:

<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.net
http://www.springframework.net/xsd/spring-objects.xsd"> <object name="UserInfoDal1" type="SpringNetDemo.UserInfoDal, SpringNetDemo">
<!--<constructor-arg index="0" value="movies.txt"/>-->
</object> </objects>

Spring.Net与项目结合:

1.在Web.Config中configuration  节点中进行配置

 <configSections>
<!-- Entity Framework 块配置-->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> <!--Spring.Net块配置-->
<sectionGroup name="spring">
<section name="context" type="Spring.Context.Support.MvcContextHandler, Spring.Web.Mvc4"/>
</sectionGroup>
</configSections> <!--Spring.Net 的容器的配置节点-->
<spring>
<context>
<resource uri="file://~/Config/services.xml"/>
<resource uri="file://~/Config/controllers.xml"/>
</context>
</spring>

2.在Global.asax中改成Spring.Web

 public class MvcApplication :Spring.Web.Mvc.SpringMvcApplication

3.在packages中引入dll文件

4.在Portal中新建文件夹Config

1.controllers.xml

<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net"> <!--前面是类的全名称 后面是类的程序集 singleton="false" 每次都是创建一个心对象 不是共用一个对象 -->
<object type="SunOA.UI.Portal.Controllers.UserInfoController,SunOA.UI.Portal" singleton="false" >
<!--属性的注入-->
<property name="UserInfoService" ref="UserInfoService" />
</object>
</objects>

2.services.xml

<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net"> <object name="UserInfoService" type="SunOA.BLL.UserInfoService, SunOA.BLL" singleton="false" >
</object>
<object name="OrderInfoService" type="SunOA.BLL.OrderInfoService, SunOA.BLL" singleton="false" >
</object> </objects>

3.控制器。

 public IUserInfoService UserInfoService { get; set; }
public ActionResult Index()
{
ViewData.Model = UserInfoService.GetEntites(u => true);
return View();
}

BLL层的代码(继承于接口):
  

   public class OrderInfoService : BaseService<OrderInfo>, IOrderInfoService
    public interface IUserInfoService : IBaseService<UserInfo>

IBLL层的代码:

    public interface IOrderInfoService : IBaseService<OrderInfo>

Spring.Net程序的作用:

1.程序加载的时候,第一次请求过来的时候,初始化容器对象。

2.加载XML文件放到内存里面。

3.根据容器里面的XML配置创建对象

4.第二次和以后请求过的时候重复 第三个步骤

OA项目Ioc DI(二)的更多相关文章

  1. OA项目实战(二) 开发准备

    上次的博文OA系统实践(一) 概述中,我们已经了解了OA的相关概念.从本次博文开始,我们做一个简单的OA实例. 在OA开发之前,有几个工作们需要提前做.一个是对需求进行分析,另一个是对开发环境进行选择 ...

  2. 第一周博客之二---OA项目环境搭建及开发包部署

    OA项目环境搭建 一个项目想要能够在开发人员打包好项目包之后进行测试,就必须进行项目测试环境的搭建,要根据开发工程师的开发环境采用不同的测试环境,以下只是浅谈下Java项目OA(办公自动化平台)的环境 ...

  3. Spring系列(二):Spring IoC/DI的理解

    这几天重新学习了一下Spring,在网上找了相关的ppt来看,当看到Spring IoC这一章节的时候,先大致浏览了一下内容,有将近50页的内容,内心窃喜~QAQ~,看完这些内容能够对IoC有更深层次 ...

  4. Spring 学习教程(二): IOC/DI+AOP

    1. IOC / DI Spring是一个基于IOC和AOP的结构J2EE系统的框架 IOC 反转控制 是Spring的基础,Inversion Of Control 简单说就是创建对象由以前的程序员 ...

  5. Spring框架-IOC/DI详细学习

    一.IOC/DI概念 参考博客:https://www.cnblogs.com/xdp-gacl/p/4249939.html IOC(inversion of control, 控制反转)是一种设计 ...

  6. AutoFac IoC DI 依赖注入

    AutoFac IoC DI 依赖注入 记录点点滴滴知识,为了更好的服务后来者! 一.为什么使用AutoFac? 之前介绍了Unity和Ninject两个IOC容器,但是发现园子里用AutoFac的貌 ...

  7. SSH项目搭建(二)

    本章讲解SSH项目需要到哪些jar包,及各个jar包的作用 一.struts2 1.下载好struts2,struts2文件夹>>>>apps>>>>a ...

  8. 【Java EE 学习 67 上】【OA项目练习】【JBPM工作流的使用】

    OA项目中有极大可能性使用到JBPM框架解决流程控制问题,比如请假流程.报销流程等等. JBPM:JBoss Business Process Management,翻译过来就是业务流程管理.实际上就 ...

  9. 关于依赖注入IOC/DI的感想

    之前一直不明白依赖注入有什么好处,甚至觉得它是鸡肋,现在想想,当时真是可笑. 这个想法正如同说接口是没有用处一样. 当整个项目非常庞大,各个方法之间的调用非常复杂,那么,可以想象一下,假设说没有任何的 ...

随机推荐

  1. 怎样彻底卸载(删除)SQL server2000

    如何完全卸载SQL server 2000 一.卸载安装程序:找到电脑右下角的Windows开始按钮,找到控制面板——卸载程序. 找到server 2000的安装程序,并点击后面的卸载按钮.  是,确 ...

  2. OpenStack 认证服务 KeyStone部署(三)

    Keystone 介绍 Keystone作用: 用户与认证:用户权限与用户行为跟踪: 服务目录:提供一个服务目录,包括所有服务项和相关Api的断点 SOA相关知识 Keystone主要两大功能用户认证 ...

  3. List保存在ViewState

    private List<SYSUAO> UserRoleList { get { return ViewState["UserRoleList"] as List&l ...

  4. java的灵魂——反射

    前言:当我们在类加载的时候,除了把.class文件加载到内存,会把各个类存到各个类模板(class类型)对象上,相同的类只有一个类模板对象.连接:把类的二进制数据合并到JRE中 反射运行时探究和使用编 ...

  5. bzoj千题计划123:bzoj1027: [JSOI2007]合金

    http://www.lydsy.com/JudgeOnline/problem.php?id=1027 因为x+y+z=1,所以z=1-x-y 第三维可以忽略 将x,y 看做 平面上的点 简化问题: ...

  6. 我购买byd的几点逻辑

    1.伯克希尔哈撒韦长期看好byd不是无道理的,每次转型都是那么的成功,说明管理层很好. 2.2015年6月员工持股计划均价55元,目前48元. 3.新能源汽车龙头. 4.云轨解决了小城市建设地铁过于浪 ...

  7. Django 2.0.1 官方文档翻译:编写你的第一个 Django app,第六部分(Page 11)

    编写你的第一个 Django app,第六部分(Page 11)转载请注明链接地址 本教程上接前面第五部分的教程.我们构建了一个经过测试的 web-poll应用,现在我们会添加一个样式表和一张图片. ...

  8. Spring Data JPA原生SQL查询

    package com.test.cms.dao.repository;import org.springframework.stereotype.Repository;import javax.pe ...

  9. Python入门系列教程(六)面向对象

    1.self 所谓的self,可以理解为自己,可以把它当做C++中类里面的this指针一样理解,就是对象自身的意思,在用某个对象调用该方法时,就将该对象作为第一个参数传递给self. 2.class ...

  10. vbs 解析 html 文档

    关于VBS采集,网上流行比较多的方法都是正则,其实 htmlfile 可以解析 html 代码,但如果 designMode 没开启的话,有时候会包安全提示信息.但是开启 designMode (@预 ...