依赖注入,是Spring的核心机制,可以使Spring的Bean以配置文件的形式组织在一起,而不是以硬编码的形式耦合在一起。
依赖注入的方式通常有两种:
第一:设值注入
是通过Setter方法传入被调用者的实例,这种方式简单,直观,因此在Spring的依赖注入里面得到大量的使用。
第二:构造注入
所谓构造注入,主要是指通过构造函数来完成依赖关系的设定,而不是通过Setter方法。
Bean与BeanFactory的比较:
一、Bean是Spring管理的基本单位,在Spring的J2EE应用当中,所有的组件都是Bean,Bean包括数据源,Hibernate的SessionFactory以及事务管理器。
二、BeanFactory是Spring容器的最基本接口,BeanFactory负责创建,配置及管理Bean,它有个子接口:ApplicationContext,因此也被称为Spring上下文,另外,Spring容器还负责管理Bean与Bean之间的依赖关系。
<beans/>元素是Spring配置文件的根元素,<bean/>是<beans/>的子元素,<beans/>可以定义多个<bean/>元素,<bean/>定义一个<bean>,每个<bean>是接受Spring容器里的Java实例:
在定义<bean>时,必须定义两个元素:
一、id :确定该<bean>的唯一标识符
二、class:指定该<bean>的实现类,在这里不能是接口。通常情况下,Spring都会使用New关键字直接创建该<bean>的实例,因此,这里必须提供Bean实现类的类名。
在Spring集中管理bean的实例化时,bean实例可以通过BeabFactory的GetBean(String Beanid)方法获得,此时,BeanFactory将变成简单工厂里的工厂,程序只需要获取BeanFactory的引用,即可获得Spring容器管理全部实例的引用,从而是程序不需要实现与具体实例的实现的耦合。在具体的J2EE应用中,当应用启动时,会自动创建Spring容器的实例,组件之间直接以依赖注入的方式耦合,甚至无需访问Spring容器。
<bean>在Spring容器中的两种基本行为:
一、 singleton:单态行为
二、 non-singleton或者prototype:原型