对于容器而言需要满足两个方面:

1、全局唯一

2、无论何地都可以进行对容器的访问

对于Spring而言,BeanFactory则就是这样的容器,只不过它过于底层。在我们的日常开发中还是使用ApplicationContex.

不过ApplicationContex跟BeanFactory有一个显著的区别:ApplicationContex在容器初始化的时候实例化所有的single bean,而BeanFactory则是在第一次使用的时候才会初始化相应的Bean.

一、ApplicationContext的初始化:

  1、如果配置文件是在类路径下,可以使用new ClasspathXmlApplicationContext("相对于类路径下的文件名");

  2、如果配置文件时再文件系统下,则可以使用new FileSystemXmlApplicationContext("文件系统下的文件名");

      文件系统下的文件名 举例:"beans.xml"这表示相对于用户当前的目录——工程所在的根目录,

                "file:d:/beans.xml"表示d盘目录下的beans.xml

   3、当然如果觉得xml配置比较麻烦,还可以使用类来充当配置文件,代码如下。当然在使用类进行配置的话,那么得需要AnnotationConfigApplicationContext来初始化容器

@Configuration
public class BeanConf { @Bean(name="car")
public Car createCar(){
Car car = new Car();
car.setId(1l);
car.setName("法拉利");
car.setPrice(5000000);
return car;
}
}

  4、可以xml和类进行搭配的方式来定义bean的装配。


  对于bean的配置,不仅可以通过在xml中进行配置或在上面第三条使用方法的配置,还可以直接在bean类的定义中直接配置(从而达到定义和配置在一起,相亲相爱不分离)

  通过以下几个注解的方式就可以对一个bean进行定义

  @Repository ——dao实现类  @Service——Service实现类 @Controller——控制器

  当然在经过上面的注解配置后,需要在xml配置文件中或基于java类的配置中给spring 一个指示,spring根据这个指示会扫描某个包下的类看他是否含有上面的注解,如果有的话,则吧bean交给spring来进行控制(类过多的话,spring不可能扫描所有的类,基于这样的考虑性能是一方面吧)

  xml: 需要制定context命名空间

    xmlns:context="http://www.springframework.org/schema/context"

    schemaLocation中添加"

http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd

"

<context:compent-scan base-package="..."/>

当然如果还想在精确点控制的话,可以使用context:compent-scan的子元素context:exclude-filter(排除在外的目标类),context:include-filter(包含在内的目标类)

  java类:。。。

二、bean的作用域

  bean的作用域影响这bean的生命周期。

  1. singleton 单例bean,如果配置的bean没有显示指定scope则默认是singleton
  2. prototype 每次调用getBean时都会重新new 一个实例
  3. request 适用于web应用程序,每次请求都会重新new 一个实例
  4. session 适用于web应用程序,同一个http session都获取的是同一个对象
  5. globalSession 适用于web应用程序(暂时不知道为什么会定义这么个作用域)

ioc容器的更多相关文章

  1. 深入理解DIP、IoC、DI以及IoC容器

    摘要 面向对象设计(OOD)有助于我们开发出高性能.易扩展以及易复用的程序.其中,OOD有一个重要的思想那就是依赖倒置原则(DIP),并由此引申出IoC.DI以及Ioc容器等概念.通过本文我们将一起学 ...

  2. IL实现简单的IOC容器

    既然了解了IL的接口和动态类之间的知识,何不使用进来项目实验一下呢?而第一反应就是想到了平时经常说的IOC容器,在园子里搜索了一下也有这类型的文章http://www.cnblogs.com/kkll ...

  3. 通过中看不中用的代码分析Ioc容器,依赖注入....

    /** * 通过生产拥有超能力的超人实例 来理解IOC容器 */ //超能力模组接口 interface SuperModuleInterface{ public function activate( ...

  4. Spring在非web应用中关闭IoC容器 (registerShutdownHook)

    在基于web的ApplicationContext实现中,已有相应的实现来处理关闭web应用时恰当地关闭Spring IoC容器.但,如果你正在一个非web应用的环境下使用Spring的IoC容器,如 ...

  5. .net自带的IOC容器MEF使用

    IOC能做什么 IoC 不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合.更优良的程序. 控制反转: 将控制权移交给第三方容器  new 操作 依赖注入: 在程序 ...

  6. NET 自带IOC容器MEF指初体验

    转自:http://www.cnblogs.com/ulex/p/4186881.html IOC容器:工具较多,大体功能都相同,大都需要事先对接口与实现进行配对(通过代码或配置文件),然后由系统自动 ...

  7. 自定义模拟一个Spring IOC容器

    一.模拟一个IOC容器: 介绍:现在,我们准备使用一个java project来模拟一个spring的IOC容器创建对象的方法,也就是不使用spring的jar自动帮助我们创建对象,而是通过自己手动书 ...

  8. IoC原理-使用反射/Emit来实现一个最简单的IoC容器

    从Unity到Spring.Net,到Ninject,几年来陆陆续续用过几个IoC框架.虽然会用,但也没有一直仔细的研究过IoC实现的过程.最近花了点时间,下了Ninject的源码,研究了一番,颇有收 ...

  9. Spring框架IOC容器和AOP解析

    主要分析点: 一.Spring开源框架的简介  二.Spring下IOC容器和DI(依赖注入Dependency injection) 三.Spring下面向切面编程(AOP)和事务管理配置  一.S ...

  10. Lind.DDD.IoC(大叔推荐)~在服务定位器中引入IoC容器~容器的适配器

    回到目录 关于依赖倒置(DIP) 高层模块不依赖于低层模块的实现,而低层模块依赖于高层模块定义的接口,通俗的讲,就是高层模块定义接口,低层模块负责实现,这在我们实际开发中经常被用到,层与层之间引用,经 ...

随机推荐

  1. DRUID连接池的简单使用

    DRUID——为监控而生的DB池 1.  DRUID介绍 DRUID是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0.DBCP.PROXOOL等DB池的优点,同时加入了日志监控,可以很好的监 ...

  2. char*,const char*和string的相互转换

    好久没写东西啦,发表学术文章一篇,hiahia~ 近日和小佳子编程时遇到很多转换问题,很麻烦,在网上查了很多资料. 为了以后查找方便,特此总结如下. 如果有不对的地方或者有更简单的方法,请指出~~ 1 ...

  3. 添加service到SystemService硬件服务

    添加service到SystemService: 添加硬件服务. 创建时间:2015年3月9日(星期一) 晚上11:07 | 分类:硬件驱动Android | 天气: 修改时间:2015年3月10日( ...

  4. hdu2852KiKi's K-Number(区间K值)

    http://acm.hdu.edu.cn/showproblem.php?pid=2852 区间K值写错了... #include <iostream> #include<cstd ...

  5. easyui datagriad 框架 自适应r

    easyui datagriad 框架 在做列自适应时可以采取以下步骤: 1. fitColumns: true,/*自动扩大或缩小列的尺寸以适应表格的宽度并且防止水平滚动*/ 使之保持与父类宽度相同 ...

  6. 【转】Android source build/envsetup.sh学习笔记

    原文网址:http://blog.csdn.net/mliubing2532/article/details/7567164 如果你只需要修改某一个模块的内容,但是却每次都要执行make, 最后等待很 ...

  7. Servlet能读到JSessionID,读不到其它cookie问题

    Servlet的Cookie值保存与获取 今天测试设置和获取Cookie遇到了一点小问题,很奇怪的问题: 把J2ee服务部署在本地 8080端口:访问任何一个服务时,如果客户端没有cookie,则下发 ...

  8. Extjs4-treepanel-解析json/fields中是否加入leaf的区别

    json解析list时,我原先的写法是: Map<String, Object> map = new HashMap<String, Object>(); map.put(&q ...

  9. [POJ1477]Box of Bricks

    Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 19503   Accepted: 7871 Description Litt ...

  10. 开发工具安装运行bug总结

    如果tomcat出现闪退 在startup.bat--编辑   在文件最后加上 pause  ,再跑一次,可以看到闪退的原因. 一般是环境变量问题,只需要打开starup.bat--编辑,最方件的最上 ...