用于配置对象交由Spring来创建。 默认情况下他调用的是类中的无参构造,如果没有无参构造则不能创建成功。
基本属性:
id:Bean实例在Spring容器中的唯一标识class:Bean的全限定名称scope:指对象的作用范围,取值如下:
取值范围说明被创建的时机singleton默认的,单例的加载配置文件,创建Spring容器的时创建prototype多利的创建对象的时(getBean();)requestWEB项目,Spring创建一个Bean对象,将对象存入request域中sessionWEB项目,Spring创建一个Bean对象,将对象存入session域中global sessionWEB项目,应用中Portlet环境Bean的实例化个数:1个 Bean的实例化实际:当Spring核心文件被加载时,实例化配置的备案实例 Bean的生命周期:
对象创建:当应用加载时,对象被创建了对象运行:只要容器在,对象一直活着对象销毁:当应用卸载,销毁容器时对象就被销毁了Bean的实例化个数:多个 Bean的实例化时机:当调用getBean()方法时实例化Bean
对象创建:当使用对象时,创建新的对象实例对象运行:只要对象在使用中,就一直活着对象销毁:当对象长时间不用时,被Java的垃圾回收器回收因为UserService和UserDao都在Spring容器中,二最终程序直接使用的是UserService,所以可以在Spring容器中,将UserDao设置到User Service内部。
依赖注入:是Spring框架核心IOC的具体实现
在编写程序时,通过控制反转,把对象的创建交给了Spring,但是到马总不可能出现没有依赖的情况。 IOC解耦只是减低他们的依赖关系,但不会消除。例如:业务层人会调用持久层的方法。
那么这种业务层和持久层的依赖关系,在使用Spring之后就让Spring来维护了。 简单来说,就是坐等框架吧持久层对象传入业务层,而不用我们自己去获取。
将UserDao注入到UesrService内部
构造方法set方法其次修改配置文件
<bean id="userdata" class="com.orange.Impl.UserDaoImpl" ></bean> <constructor-arg name="userDao" ref="userdata"></constructor-arg></bean>上面的操作,都是注入的引用Bean,除了对象的引用可以注入,普通数据类型,集合都可以在容器中进行注入
注入数据的三种数据类型
普通数据类型(value)引用数据类型(ref)集合数据类型(子标签)实际开发中,Spring的配置内容非常的多,这就导致Spring配置很繁杂而且体积很大,所以,可以将部分配置才接到其他的配置文件中,二Spring主配置文件通过import标签进行加载
<import resource="applicationContext-User.xml"></import>