不完全spring学习-2学点spring的黑话之bean
2020-03-19 本文已影响0人
闲杂人等
让spring替你完成对象控制,你需要告诉他:
- 如何创建对象
- 对象的声明周期
- 对象的依赖关系
一些黑话
- bean, 即为对象,告诉spring,你需要它控制一个对象
<bean></bean> - 告诉spring,这个对象应该从哪个类来实例化,由于spring用的是实例化,所以类名是全称
<bean class="com.yourpackage.YourClass"/> - 可以告诉spring这个对象的一个标识(名字),你会用这个名字可以从spring那召唤出这个对象(容器中获得对象)。
<bean name="aClass" class="com.yourpackage.YourClass" /> - 告诉spring,这个对象的作用域:全局唯一(singletong,这是默认的)、prototype,request,session,global-session.
<bean name="aClass" class="com.yourpackage.YourClass" scope="prototype"/>- singleton:Spring每次都会返回同一个实例
- prototype :每次需要时Spring会返回一个新的对象
- request:bean在一个http请求中 仅在web应用中使用
- session:每一个http对话
- global-session: 每一个全局http会话
- 在spring控制对象的声明周期过程中,告诉spring做些事情
- 实例化后:init-method
<bean name="aClass" class="com.yourpackage.YourClass" scope="prototype" init-method="init"/>init应该在com.yourpackage.YourClass中定义,是一个无参无返回的方法。 - 销毁后:destory-method:
<bean name="aClass" class="com.yourpackage.YourClass" scope="prototype" init-method="init" destory-method="destory"/>destory要求同上
- 实例化后:init-method
- 如果希望spring初始化对象时,对对象的属性进行初始化怎办?
- 基本类型,String视为基本类型
<bean ......>
<property name="field_name" value="field_value" />
</baen>
- 引用类型
<bean ......>
<property name="field_name" ref="bean_name" />
</baen>
- 为构造函数传参:constructor-arg
参考第6条,只要把property换成constructor-arg即可 - 还可注入内部类,集合等,用了再查
- 引用类型可以自动注入:byName,byType
<!--不自动注入--!>
<bean name="aClass",class="xx.xx.ClassA">
<!--需配置以下内容--I>
<property name="field_of_ref" ref="anotherBeanName" />
</bean>
<!--自动注入--!>
<bean name="aClass" class="xx.xx.ClassA" autowire="byName" >
<!--不需要配置property了,根据ClassA中的属性名自动寻找名字和ClassA属性名一致,且类型一致的bean--I>
</bean>
<!--被引用对象--!>
<bean name="field_of_ref" class="xx.xx.ClassB" />
- 有重复的配置时,spring的bean是可以配置继承的
- 配置文件可以引入其他文件。
<import resource="classpath:ba06/spring-sudent.xml">