1、Bean管理配置文件的标签
1.
使用无参数构造方法实例化
Bean
<bean id="bean1" class="com.itheima.demo2.Bean1"/>
2. id
属性和
name
属性的区别
* id -- Bean
起个名字,在约束中采用
ID
的约束,唯一
*
取值要求:必须以字母开始,可以使用字母、数字、连字符、下划线、句话、冒号
id:
不能出现特殊字符
* name -- Bean
起个名字,没有采用
ID
的约束
*
取值要求:
name:
出现特殊字符
.
如果
<bean>
没有
id
的话
, name
可以当做
id
使用
* Spring
框架在整合
Struts1
的框架的时候,
Struts1
的框架的访问路径是以
/
开头的,例如:
/bookAction
3. class
属性
-- Bean
对象的全路径
4. scope
属性
-- scope
属性代表
Bean
的作用范围!
* singleton --
单例
.(
默认
)
* prototype --
多例,在
Spring
框架整合
Struts2
框架的时候,
Action
类也需要交给
Spring
做管理,配置把
Action
类配置成多例!!
* request --
应用在
Web
项目中
,
每次
HTTP
请求都会创建一个新的
Bean
* session --
应用在
Web
项目中
,
同一个
HTTP Session
共享一个
Bean
* globalsession --
应用在
Web
项目中
,
多服务器间的
session
5. Bean
对象的创建和销毁的两个属性配置(了解)
*
说明:
Spring
初始化
bean
或销毁
bean
时,有时需要作一些处理工作,因此
spring
可以在创建和拆卸
bean
的时候调用
bean
的两个生命周期方法
* init-method --
当
bean
被载入到容器的时候调用
init-method
属性指定的方法
* destroy-method --
当
bean
从容器中删除的时候调用
destroy-method
属性指定的方法
*
想查看
destroy-method
的效果,有如下条件
* scope= singleton
有效
* web
容器中会自动调用,但是
main
函数或测试用例需要手动调用(需要使用
ClassPathXmlApplicationContext
的
close()
方法)
2、Spring的依赖注入DI
IOC与DI的区别:
IOC:控制反转,对象创建权反转给Spring。
DI :依赖注入,Spring框架创建Bean组件时,动态将依赖对象注入到Bean组件中。
例如:如果
UserServiceImpl
的实现类中有一个属性,那么使用
Spring
框架的
IOC
功能时,可以通过依赖注入把该属性的值传入进来!!
*
具体的配置如下
<bean id="us" class="com.spring.demo1.UserServiceImpl">
<property name="uname" value="
小风
"/>
</bean>
2.1、Spring的注入方式
1,常见类的注入有三种:构造方法,set方法,接口注入。
2,Spring框架提供了四种,底层实际使用了两种:构造方法及set方法。(有人说Spring也有接口注入,本人没找到)
3,Spring框架的四种注入方式:构造方法,set方法,P名称空间,SPEL表达式。
A、 构造方法注入
1、 java类编写构造方法。
2、 编写配置文件
<bean id="car" class="com.spring.demo4.Car">
<constructor-arg name="name" value="
大奔
"/>
<constructor-arg name="money" value="100"/>
</bean>
B、 Set方法注入
1、 编写Java类,属性及Set方法。
2、 编写配置文件
<bean id="car" class="com.spring.demo4.Car">
<property name="name" value="
大奔
"/>
<property name="money" value="100"/>
</bean>
C、 P名称空间注入 Spring2.5版本以上
1.
步骤一:需要先引入
p
名称空间
*
在
schema
的名称空间中加入该行:
xmlns:p="http://www.springframework.org/schema/p"
2.
步骤二:使用
p
名称空间的语法
* p:
属性名
= ""
* p:
属性名
-ref = ""
3.
步骤三:测试
* <bean id="person" class="com.spring.demo4.Person" p:pname="
老王
" p:car2-ref="car2"/>
D、SpEL表达式 spring3.0
1. SpEL
:
Spring Expression Language
是
Spring
的表达式语言,有一些自己的语法
2.
语法
* #{SpEL}
3.
例如如下的代码
<!-- SpEL
的方式
-->
<bean id="person" class="com.
spring
.demo4.Person">
<property name="pname" value="#{'
小风
'}"/>
<property name="car2" value="#{car2}"/>
</bean>
4.
还支持调用类中的属性或者方法
*
定义类和方法,例如
public class CarInfo {
public String getCarname(){
return "
奇瑞
QQ";
}
}
*
配置
CarInfo
对应的
Bean
* <bean id="carInfo" class="com.spring.demo4.CarInfo"/>
*
获取属性的配置
* <property name="name" value="#{carInfo.carname}"/>
*
获取方法的配置
* <property name="name" value="#{carInfo.getCarname()}"/>