天天看点

Spring-依赖注入简介与xml配置1.获得2.生成bean3.注入bean4.自动装配5.高级xml特性

spring核心是依赖注入。本质就是通过配置xml文件或注解来自动生成你需要的对象,放在spring的大容器中。

spring是一个独立的框架,既可以用在java SE项目中,也可以用在 Web项目中。程序先创建bean容器,再调用bean容器的getBean()方法来获取Spring容器中的bean。

会得到多个依赖的jar,见下图。

Spring-依赖注入简介与xml配置1.获得2.生成bean3.注入bean4.自动装配5.高级xml特性

图1-1 spring的依赖jar

这里的bean类似于JavaBean,但范围要宽的很多。spring就像一个大容器,帮我们创建好对象后放入了它的容器。所有由它创建的对象,都叫bean。

bean的作用域:

singleton

每次调用getBean(),都返回同一个对象;

prototype

每次调用getBean(),都返回新的对象;

request 针对每次HTTP请求,Web应用中才有效。

org.springframework.beans.factory.BeanFactory

接口。它是一个容器,spring生成的bean存放在它的实现类中。主要有下面几个方法。

Object org.springframework.beans.factory.BeanFactory.getBean(String name)

根据名字拿到bean对象。

<T> T org.springframework.beans.factory.BeanFactory.getBean(String name, Class<T> requiredType) 

getbean()的重载。

org.springframework.context.ApplicationContext

接口,,BeanFactory的子接口。

生成ApplicationContext的构造函数有:

FileSystemXmlApplicationContext 从当前项目位置算起,即src/目录的上层目录。

ClassPathXmlApplicationContext 从classes/开始算起。例子:

Spring-依赖注入简介与xml配置1.获得2.生成bean3.注入bean4.自动装配5.高级xml特性

图2-1 bean配置文件的位置

可以让spring读取我们的.properties文件。例子见下,注意用到的是org.springframework.beans.factory.config.PropertyPlaceholderConfigurer。

占位

当实例化一个bean时,可能需要执行一些初始化操作来确保该bean处于可用状态;同样地,当不再需要bean,将其从容器中移除时,我们还可能按顺序执行一些清除工作。此时我们需要init-method与destroy-method属性。

两种注入

设值注入:通过<property .../>元素驱动spring执行setter方法。

构造注入:通过<constructor-arg.../> 元素驱动Spring执行带参数的构造函数。

需要在bean类中实现所有private字段的setter方法。下面是示例spring配置。

为了简化xml配置,spring提供了四种自动装配机制。

byName:把与bean的属性同名的其他bean,自动装配到对应属性中;若找不到,不装配。

byType:把与bean的属性同类型的其他bean,自动装配到对应属性中;若找不到,不装配。

constructor :把与bean的构造函数形参同类型的其他bean,自动装配到对应属性中;若找不到,不装配。

autodetect:尝试constructor装配,若失败,采用byType装配。