Spring学习_3_Spring Bean 的装配模式

Spring IoC容器

Spring IoC容器的设计主要是基于BeanFactory和ApplicationContext两个接口

Bean工厂BeanFactory

由org.springframework.beans.factory.BeanFactory接口定义,作为制造Bean的工厂,BeanFactory接口负责向容器的使用者提供实例,其功能主要是负责初始化各种Bean,并根据预定的配置完成对象之间依赖关系的组装,最终向使用者提供已完成装配的可用对象。

Bean工厂ApplicationContext

继承自BeanFactory接口,ApplicationContext接口有三个常用的实现类

ClassPathXmlApplicationContext

之前代码中用到的就是这种方式
在这里插入图片描述

FileSystenXmlApplicationContext

读取spring配置文件的方式不在从类路径中读取文件,而是通过参数指定配置文件的位置,可以获得路径之外的资源
在这里插入图片描述

XmlWebApplicationContext

从web应用中寻找指定的xml配置文件
但这些实现类再实例化ApplicationContext后,同样通过getBean方法从ApplicationContext容器中获取装配好的Bean实例以供使用。
在Java项目中最好用 ClassPathXmlApplicationContext,但web项目中就不行了
web项目的启动是由相应的web服务器负责的,因此在web项目中,ApplicationContext容器的实例化工作最好交由web服务器完成,spring为此提供了如下两种方式

基于ContextLoaderListener实现
基于ContextLoaderServlet实现

Bean的配置

在Spring中,XML配置文件的根元素是<beans>,其下包含<bean>子元素,每个<bean>子元素定义了一个Bean,并描述该Bean如何被装配到Spring容器中。
<bean>元素包含了多个属性,其常用属性包括id,name,class,scope
<bean>元素中同样包含了多个子元素:constructor-arg,property,ref,value,list,set,map,entry
今天累了,改天有空再把具体介绍码上来。

Bean的作用域

就是指Bean实例的生存空间或有效范围

  • singleton:在每个Spring IoC容器中,一个bean对应一个对象实例(默认的)
  • prototype:一个bean定义对应多个对象实例
  • request:
  • session:
  • global session:
处于默认的单例模式

在这里插入图片描述

prototype

在这里插入图片描述
在这里插入图片描述

Bean的装配模式

也就是Bean依赖注入

基于XML的Bean装配

前面用的基本都是XML装配

  • 构造方法<constructor-arg>
  • 属性setter方法<property>
基于Annotation的Bean装配

bean特别多时,xml文件会显得特别臃肿,从JDK5开始提供了Annotation(注解)的功能

  • @Component注解
  • @Repository注解 应用在DAO层
  • @service注解 应用在业务层
  • @Controller注解 应用在控制层
  • @Resource注解
  • @Qualifier注解
实例

在这里插入图片描述
在这里插入图片描述
同理
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

自动装配

Spring的<bean>元素中包含一个autowire属性,可通过设置autowire的属性来自动装配Bean.所谓自动装配,就是将一个Bean注入到其他Bean的Property中。autowire属性值及说明如下:

  • default :默认值
  • byName:
  • byType:
  • constructor:
  • autodetect:
  • no:
实例

在这里插入图片描述
对于大型的项目不建议使用自动装配,虽然自动装配可以减少配置文件的工作量,但是大大降低了依赖关系的清晰性和透明性。

发布了18 篇原创文章 · 获赞 18 · 访问量 1175

猜你喜欢

转载自blog.csdn.net/qq_42542609/article/details/103946935