Spring配置文件:

引入其他配置文件(分模块开发):

实际开发中,Spring的配置内容非常多,这就导致Spring配置很繁杂且体积很大,所以,可以将部分配置拆解到其他的配置文件中,而在Spring主配置文件通过import标签进行加载。

1
<import resource="applicationContext-xxx.xml"/>

Spring的重点配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<bean>标签
id属性:在容器中Bean实例的唯一标识,不允许重复
class属性:要实例化的Bean的全限定名
scop属性:Bean的作用范围,常用的是Singleton(默认)和prototype。
<property>标签:属性名称
value属性:注入的普通属性值
ref属性:注入的对象引用值
<list>标签
<map>标签
<properties>标签
<constructor-arg>标签
<import>标签:导入其他的Spring的分文件

-----------------------------------------------------------------------
Bean标签范围配置:(scope:指对象的作用范围,取值如下)
Singleton(默认):读取配置文件时创建对象实例,只创建一个,单例的。
prototype:多例的。getBean时创建。
request:WEB项目中,Spring创建一个Bean对象,将对象存入到request域中。
session:WEB项目中Spring创建一个Bean的对象,将对象存入到session域中。
global session:WEB项目中,应用在Portlet环境,如果没有Portlet环境那么globalSession相当于sossion。

------------------------------------------------------------------------
Bean标签范围配置
1)当scope的取值为singleton时
Bean的实例化个数:1个
Bean的实例化实际:当Spring核心文件被加载时,实例化配置的Bean实例。
Bean的声明周期:
· 对象创建:当应用加载,创建容器时,对象被创建了。
· 对象运行:只要容器在,对象一直活着。
· 对象销毁:当应用卸载,销毁容器时,对象就被销毁了。
2)当scope的取值为prototype时
Bean的实例化个数:多个
Bean的实例化时机:当调用getBean()方法时实例Bean
· 对象创建:当使用对象时,创建新的对象实例
· 对象运行:只要对象在使用中,就一直活着。
· 对象销毁:当对象长时间不用时,被java的垃圾回收器回收了。

Spring相关API:

ApplicationContext的继承体系

  • applicationContext: 接口类型,代表应用上下文,可以通过实例获得Spring容器中的Bean对象。

ApplicationContext的实现类

  • ClassPathXmlApplicationContext
    • 它是从类的根路径下加载配置文件(推荐使用。
  • FileSystemXmlApplicationContext
    • 它是从磁盘路径上加载配置文件,配置文件可以在磁盘的任意位置。
  • AnnotationConfigApplicationContext
    • 当使用注解配置容器对象时,需要使用此类来创建Spring容器,它用来读取注解。

getBean()方法使用

1
2
3
4
5
6
7
8
9
10
11
12
13
public Object getBean(String name) throws Exception {

assertBeanFactoryActive();
return getBeanFactory().getBean(name);
}

------------------------------------------------------------------------
public <T> T getBean(Class<T> requiredType) throws Exception {

assertBeanFactoryActive();
return getBeanFactory.getBean(requeiredType);
}

Spring配置数据源

抽取jdbc配置文件

applicationContext.xml加载jdbc.properties配置文件获得连接信息。

首先,需要引入context命名空间和约束路径:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// 加载外部的properties文件
<context:property-p1lacheolder location="classpath:jdbc.properties"/>

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
// 参数注入
<property name="driverClass" value="${jdbc.driver}"/}
<property name="jdbcUrl" value="${jdbc.url}"/}
<property name="user" value="${jdbc.username}"/}
<property name="password" value="${jdbc.password}"/}
</bean>

---------------------------------------------------------------------
Spring容器加载properties文件
<context:property-placeholder location="xx.properties"/>
<property name="" value="${key}"/>


---------------------------------------------------------------------
Tips:
class-->设置调用空参的方法的类的路径。
name-->设置set方法名字。
value-->设置properties.xml文件的key值。

依赖注入:

70行的是带参构造方法的参数。

而 ref=”userdao” 则是注入的依赖的id。