ioc

spring、spring mvc以及IOC的阅读

懵懂的女人 提交于 2020-02-18 08:23:23
spring vs spring-mvc spring是应用级框架 spring mvc只是一个mvc框架 spring现在包含很多子模块,我们用的最多的是依赖注入。 spring模块可分为以下: Core Container: Data Access/Integration: Web: 其他,如AOP、Aspects、Test等: spring模块框架如下: 使用Spring框架的优点 像开发POJO类一样去开发企业应用程序 模块化管理 集成多种技术如ORM、logging、Quartz、JDK timers等 方便测试 使用Spring框架的缺点 第一、软件系统中由于引入了第三方IOC容器,生成对象的步骤变得有些复杂,本来是两者之间的事情,又凭空多出一道- 手续,所以,我们在刚开始使用IOC框架的时候,会感觉系统变得不太直观。 第二、由于IOC容器生成对象是通过反射方式,在运行效率上有一定的损耗。如果你要追求运行效率的话,就必须对此进行权衡,如WEB2.0。 第三、具体到IOC框架产品(比如:Spring)来讲,需要进行大量的配制工作,比较繁琐,对于一些小的项目而言,客观上也可能加大一些工作成本 第四、IOC框架产品本身的成熟度需要进行评估,如果引入一个不成熟的IOC框架产品,那么会影响到整个项目,所以这也是一个隐性的风险。 Spring IoC 1.两种容器: Spring

IOC和DI 控制反转和依赖注入

此生再无相见时 提交于 2020-02-18 08:20:30
首先要分享的是Iteye的开涛这位技术牛人对Spring框架的IOC的理解,写得非常通俗易懂,以下内容全部来自原文,原文地址:http://jinnianshilongnian.iteye.com/blog/1413846 1.1、IoC是什么   Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。如何理解好Ioc呢?理解好Ioc的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”,那我们来深入分析一下:   ●谁控制谁,控制什么:传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而IoC是有专门一个容器来创建这些对象,即由Ioc容器来控制对 象的创建;谁控制谁?当然是IoC 容器控制了对象;控制什么?那就是主要控制了外部资源获取(不只是对象包括比如文件等)。   ●为何是反转,哪些方面反转了:有反转就有正转,传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象,也就是正转;而反转则是由容器来帮忙创建及注入依赖对象;为何是反转?因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转;哪些方面反转了?依赖对象的获取被反转了。  

3.Spring依赖注入(DI)

邮差的信 提交于 2020-02-17 23:56:31
一.什么是依赖注入(DI) 依赖注入(Dependency Injection,DI)。 依赖 : 指Bean对象的创建依赖于容器 . Bean对象的依赖资源 . 注入 : 指Bean对象所依赖的资源 , 由容器来设置和装配 . 1.依赖注入的三种方式: 构造器注入:前面已经说过 Set方式注入 拓展方式注入 2.Set方式注入 依赖注入: 依赖:bean对象的创建依赖于容器 注入:bean对象中的所有属性,由容器注入! (1)项目搭建: 复杂类型Adress类 1 public class Address { 2 3 private String address; 4 5 public String getAddress() { 6 return address; 7 } 8 9 public void setAddress(String address) { 10 this.address = address; 11 } 12 13 @Override 14 public String toString() { 15 return "Address{" + 16 "address='" + address + '\'' + 17 '}'; 18 } 19 } 真实对象Student类 1 public class Student { 2 3 private String

ASP.NET MVC学前篇之Ninject的初步了解

a 夏天 提交于 2020-02-17 23:20:11
ASP.NET MVC学前篇之Ninject的初步了解 1.介绍 废话几句。Ninject是一种轻量级的、基础.NET的一个开源IoC框架,在对于MVC框架的学习中会用到IoC框架的,由于这样的IoC开源框架有非常多,本篇的主题仅仅有一个,就是让阅读过本篇幅的朋友逗知道IoC框架在项目中的作用,以及它的重要性。 这样做的目的是以便在以后的学习工作中选择自己中意的一个IoC框架来学习、使用,或者是自己去实现一个。好了,不废话了。 2.环境准备 1.新建个4.0Framework的一个控制台应用程序项目,名称为IoCDemo 2.在 http://www.ninject.org/download 网页中,下载Version 2.2版本号的Ninject程序集(之前版本号的不支持4.0库)。下载完毕解压后会看到如图1里的几个文件,在这里你仅仅须要关心名称为Ninject的文件,其他的忽略掉。 图1 3.在项目中新建个Lib文件夹,并把Ninject.dll、Ninject.pdb和Ninject.xml三个文件复制到文件文件夹下,而且加入引用到项目中。 如图2: 图2 环境准备工作做好了,能够安心的来看演示样例了。捎带一句Ninject.xml文件是程序集文件的凝视。只是都是英文的,对于姿势水平不高的屌丝来说这并不算是福利。当然也包含本人。(ps:谷歌翻译什么的非常好用) 3.初步认识

IOC框架之AutoFac简介

喜你入骨 提交于 2020-02-17 19:11:01
一、为什么使用AutoFac? 之前介绍了Unity和Ninject两个IOC容器,但是发现园子里用AutoFac的貌似更为普遍,于是捯饬了两天,发现这个东东确实是个高大上的IOC容器~ Autofac是.NET领域最为流行的IOC框架之一,传说是速度最快的一个: 优点: 它是C#语言联系很紧密,也就是说C#里的很多编程方式都可以为Autofac使用,例如可以用Lambda表达式注册组件 较低的学习曲线,学习它非常的简单,只要你理解了IoC和DI的概念以及在何时需要使用它们 XML配置支持 自动装配 与Asp.Net MVC 3集成 微软的Orchad开源程序使用的就是Autofac,从该源码可以看出它的方便和强大 既然它都这么牛X了,我们用它就理所当然了,所以推荐其为IOC的终极解决方案! Autofac是一款IOC框架,比较于其他的IOC框架,如Spring.NET,Unity,Castle等等所包含的,它很轻量级性能上非常高。 官方网站 http://autofac.org/ 源码下载地址 https://github.com/autofac/Autofac 控制反转(IoC/Inverse Of Control): 调用者不再创建被调用者的实例,由autofac框架实现(容器创建)所以称为控制反转。 依赖注入(DI/Dependence injection) :

Spring初学笔记(一):Spring IOC的理解

≡放荡痞女 提交于 2020-02-17 15:28:31
关于依赖注入、控制反转   Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。   在我看来,这句话已经很好的体现了出来IOC思想在编程中的体现形式,而采用这样的思想,可以大大降低类与类之间的耦合度,便于代码的扩展。   这里,我们看一个简单的例子:   我们假设有人和车,他们的类分别如此: public interface Car { public void run(); } public interface Person { public void Travel(); }   首先定义两个接口,表示要实现的车的功能和人的功能,而在实现人的功能时,旅游总不能光着脚出去吧,假设我们需要一辆车才能出行: public class BenzCar implements Car{ @Override public void run() { System.out.println("奔驰车在跑"); } } public class Man implements Person { private Car car; public Man(){ car = new BenzCar(); } @Override public void Travel() {

认识Java Spring 框架

自作多情 提交于 2020-02-17 04:17:25
  谈起Java 开发总是离不开各种框架,当我们在使用Java初期就被各种框架的包围着,而.Net开发就比较简单了,从WinForm到Asp.Net再到APS.Net Mvc,一气呵成,开发起来那叫一个爽,但是也带来了一些问题,比如,.Net 开发者使用微软已经封装好的类库,程序员在日常的开发过程中,都不知道自己所使用的类库有多么精妙,但是Java就不一样了,它是完全开源的,可以按照自己的需求加载适合的类库,作为开发者就可以知道大牛们写的牛叉代码,也可以看到代码的重构的美妙之处。今天我们就来谈一谈Java的Spring框架,有出入的地方希望各位给予指出。 1. 什么是Spring框架   百度百科的解释是:Spring是一个开源框架,它是为了解决企业应用开发的复杂性而创建的。从字面意思上我们知道他是为了解决开发复杂性,他是如何解决复杂性的呢,说到这问题我们就必须从Spring的特性说起了   Spring特性: 主要优势是分层结构,Spring框架总共有七部分组成,每一部分都可以独立拆分出来(非严格的说),分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring的核心是控制翻转(IOC

转 Autofac怎么依赖注入ASP.NET MVC5类的静态方法

[亡魂溺海] 提交于 2020-02-16 10:55:11
之前我有介绍过怎么在ASP.NET mvc 5中实现的Controller的 依赖注入 。一般是通过Contrller的构造函数的参数或者属性来注入,但是这有一个共同点就是调用这个类的方法一般都是实例方法,也就是要实例化这个类才能调用它的方法。但是如果它是一个静态方法我们又该怎么办呢?其实也很简单,下面我们就通过一个写日志的组件来介绍怎么实现ASP.NET MVC5类的静态方法的依赖注入。因为考虑到很多地方都要用到写日志这个方法,而且我们又不想每次调用都需要new一个对象,所以把调用方法封装成一些静态方法。 DependencyRegistrar.cs using Autofac; using Autofac.Integration.Mvc; using Lanhu.Services; using Lanhu.Services.MetionNowOrder; using Lanhu.Services.Member; using System.Web.Mvc; namespace Lanhu.Admin { public class DependencyRegistrar { public static void RegisterDependencies() { var builder = new ContainerBuilder(); builder

Spring IOC原理学习笔记

烈酒焚心 提交于 2020-02-15 10:02:25
Spring容器高层视图 Spring 启动时读取应用程序提供的Bean配置信息,并在Spring容器中生成一份相应的Bean配置注册表,然后根据这张注册表实例化Bean,装配好Bean之间的依赖关系,为上层应用提供准备就绪的运行环境。 IOC容器介绍 pring 通过一个配置文件描述 Bean 及 Bean 之间的依赖关系,利用 Java 语言的反射功能实例化 Bean 并建立 Bean 之间的依赖关系。 Spring 的 IoC 容器在完成这些底层工作的基础上,还提供了 Bean 实例缓存、生命周期管理、 Bean 实例代理、事件发布、资源装载等高级服务。 BeanFactory 是 Spring 框架的基础设施,面向 Spring 本身; ApplicationContext 面向使用 Spring 框架的开发者,几乎所有的应用场合我们都直接使用 ApplicationContext 而非底层的 BeanFactory。 BeanFactory BeanFactory体系架构: BeanDefinitionRegistry: Spring 配置文件中每一个节点元素在 Spring 容器里都通过一个 BeanDefinition 对象表示,它描述了 Bean 的配置信息。而 BeanDefinitionRegistry 接口提供了向容器手工注册 BeanDefinition

Spring—IOC容器如何实例话Bean

萝らか妹 提交于 2020-02-13 23:27:52
     前言    传统应用程序可以通过new和反射的方式来实例化Bean。而Spring Ioc容器则需要根据配置元数据使用反射机制来创建Bean。在Spring Ioc容器中根据Bean创建Bean实例有以下几种方式。     (1)、使用构造器实例化Bean     (2)、使用静态工厂实例化Bean     (3)、使用实例工厂实例化Bean   一、使用构造器实例化Bean:Spring IoC容器能使用 默认空构造器 也能使用 有参数构造器 两种方式创建Bean。     (a)、使用空构造器进行定义,使用此种方式,class属性指定的类必须有空构造器     (b)、使用有参数构造器进行定义,使用此中方式,可以使用 < constructor-arg > 标签指定构造器参数值,其中index表示位置,value表示常量值,也可以指定引用,指定引用使用ref来引用另一个Bean定义   配置文件:   <!-- 默认构造器 --> <bean name="bean1" class="cn.javass.spring.ioc01.helloword.HelloImpl"></bean> <!-- 有参数构造器 --> <bean name="bean2" class="cn.javass.spring.ioc01.helloword.HelloImpl"> <!--