1.Spring基本功能详解
-
- SpringIOC Spring的控制反转:把对象的创建、初始化、销毁等工作交给spring容器来做。由spring容器控制对象的生命周期。 ``` A. 启动spring容器 1、 在类路径下寻找配置文件来实例化容器 ApplicationContext ctx = new ClassPathXmlApplicationContext(new String[]{“beans.xml”});可以在整个类路径中寻找xml文件
- 通过这种方式加载。需要将spring的配置文件放到当前项目的classpath路径下
- classpath路径指的是当前项目的src目录,该目录是java源文件的存放位置。 2、 在文件系统路径下寻找配置文件来实例化容器 ApplicationContext ctx = new FileSystemXmlApplicationContext(new String[]{“d:\beans.xml“});Spring的配置文件可以指定多个,可以通过String数组传入。 注:经常用第一种方法启动容器 B. 从spring容器中提取对象
- 2. 别名
通过这样的配置,可以达到在一个地方命名,在多个地方使用不同的名字的效果。
- 3. Spring容器内部对象
- 1.创建对象的方式
- 无参构造函数
<bean id=“personService” class=”cn.itcast.bean.impl.PersonServiceImpl”/>
- 静态工厂
public class PersonServiceFactory { public static PersonService createPersonService(){ return new PersonServiceImpl(); } }
- 实例工厂 记住概念即可
- 4. singleton(默认值)
在每个Spring IoC容器中一个bean定义只有一个对象实例(共享)。
默认情况下会在容器启动时初始化bean,但我们可以指定Bean节点的lazy-init=“true”来延迟初始化bean,这时候,只有第一次获取bean会才初始化bean。如:
<beans default-lazy-init="true“ ...>
- 5. prototype(原型;样机;典型)
允许bean可以被多次实例化(使用一次就创建一个实例) . Spring不能对一个prototype bean的整个生命周期负责.这就意味着清楚prototype作用域的对象并释放任何prototype bean所持有的昂贵资源都是客户端的责任。
- 6. Request
在一次http请求中,一个bean定义对应一个实例,即每次http请求将会有各自的bean实例, 他们依据某个bean定义创建而成.该作用域仅在基于web的Spring ApplicationContext情形下有效
- 7. Session
在一次http请求中,一个bean定义对应一个实例,该作用域仅在基于web的Spring ApplicationContext情形下有效
- 8. Global session
在Global session中,一个bean定义对应一个实例,仅在使用portlet context时有效.该作用域仅在基于web的Spring ApplicationContext情形下有效
- 9. 初始化bean时机
Spring默认在启动时将所有singleton bean提前进行实例化。提前实例化意味着作为初始化的一部分,ApplicationContext会自动创建并配置所有的singleton bean.通常情况下这是件好事。因为这样在配置中有任何错误能立即发现。 Lazy-init=”true or false” Lazy-init 为false,spring容器将在启动的时候报错(比较好的一种方式) Lazy-init 为true,spring容器将在调用该类的时候出错。
- 10. init,destory
Spring初始化bean或销毁bean时,有时需要作一些处理工作,因此spring可以在创建和拆卸bean的时候调用bean的两个生命周期方法。 <bean id=“foo” class=“…Foo” init-method=“setup” destory-method=“teardown”/> 当foo被载入到Spring容器中时调用init-method方法。当foo从容器中删除时调用destory-method(scope = singleton有效)
- 11. 依赖注入(DI)
- 使用构造器注入
使用xml注入方式
A. 通过参数的顺序
张三 56 B. 通过参数的类型
56 张三 -
使用属性setting方法进行注入
使用xml的注入方式:
A. 简单Bean的注入 简单Bean包括两种类型:包装类型和String
B. 引用其他Bean
装配list集合
- 12. 注解
步骤: A. 在配置文件中,引入context命名空间