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

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应用程序(暂时不知道为什么会定义这么个作用域)

最新文章

  1. ubuntu更新源(Package has no installation candidate 的问题)
  2. range和xrange梳理
  3. Android composite adb interface
  4. CSS3 Transform Matrix
  5. 移动设备和SharePoint 2013 - 第5部分:自定义应用
  6. 已知ip地址和其子网掩码如何求网络号子网号主机号
  7. Windows装机指南
  8. development period
  9. 通过Web Deploy方式部署WCF
  10. 基于Win7 Python2.7的Numpy安装包分享
  11. @dynamic、@synthesize
  12. 日常API之百度翻译
  13. BZOJ 4819 新生舞会
  14. Keeweb-Linux的密码管理器
  15. 关于GCJ02和WGS84坐标系的一点实验
  16. Java数组排序基础算法,二维数组,排序时间计算,随机数产生
  17. ElasticSearch入门点滴
  18. Hive快捷查询:不启用Mapreduce job启用Fetch task三种方式介绍
  19. Java高并发秒杀API之Service层
  20. hdu-6333-莫队

热门文章

  1. MongoDB实战指南(二):索引与查询优化
  2. Win2003部署Framework 4.5框架的MVC4项目
  3. 让动画不再僵硬:Facebook Rebound Android动画库介绍
  4. 学习笔记-[Maven实战]-第二章:Maven安装和配置
  5. WCF - Consuming WCF Service
  6. BZOJ_2179_FFT快速傅立叶_(FFT)
  7. BZOJ_1607_ [Usaco2008_Dec]_Patting_Heads_轻拍牛头_(筛数)
  8. An error occurred while filtering resources
  9. ASP.NET MVC 開發心得分享 (21):Routing 觀念與技巧
  10. nginx+ffmpeg搭建rtmp转播rtsp流的flash服务器