Spring:开源的轻量级的应用开发框架
特点:简化开发(对API进行简化);
解耦(spring帮我们去管理对象,包括对象之间的依赖关系);
集成:可以集成其它的框架;
Spring:本质是管理软件中的对象,即创建对象和维护对象之间的关系;
Spring容器:
1)Spring框架用来管理对象的一个核心模块;
2)如何启动Spring容器:将Spring相关的jar文件拷贝到WEB-INF/lib下;
配置Spring的配置文件(applicationContext.xml)
启动容器;
3)利用容器创建对象:1)调用不代参的构造器;2)静态工厂;3)实例工厂;
4)作用域:
4.1)默认情况下,容器对于一个bean配置,只会创建一个实例;
4.2)可以设置scope属性=“protptype”,每getbean一次,都会创建一个实例;
生命周期
1)init-method属性:指定初始化方法,容器在创建好相应的对象之后,会立即调用初始化方法;
2)destroy-method属性:指定销毁方法,容器关闭之前会调用销毁方法;
应用使用AbstractApplicationContext接口,销毁方法只针对作用域为单列的bean;
延迟实例化:
默认情况下,容器在启动之后,会检查整个的配置文件,将配置为单个的bean,先创建好;如果设置Lazy-init属性
为true,则容器不再按照默认情况进行处理(只有当getBean才会创建);
IOC(控制反转):
对象的依赖关系交给容器来管理;
DI(依赖注入):
容器通过调用对象的构造器或者set方法来建立对象之间的依赖关系;
set方式的注入:
有无参的构造器;有相应的get/set方法;
构造器注入
有带参的构造器,添加相应的配置 < contructor-org index="" ref=""/>
自动装配:
autowire:表示让容器自动装配(自动注入依赖关系);
byName:查找和属性名称一致的bean,然后调用set方法来完成注入,如果找不到对应的bean,注入null;
byType:容器查找与属性类型一致的bean,然后调用set方法来完成注入,如果找不到对应的bean,注入null,
如果找到多个则报错;
注入基本类型的值 :可以使用value属性或者value元素;
注入集合
list集合,set集合,map元素和entry元素;props和prop元素;
将集合作为第一个bean元素
util:list元素; util:set元素 ; util:map元素; util:properties元素; util:properties可以读取proper文件内容;
Spring表达式
类似于EL表达式,用于读取bean对象的属性值;
基于注解的组件扫描
spring容器会检查指定包及其子包下面的所有类,如果该类包含了一些特定的注解,则spring容器会将其作为一个bean
来进行管理,换句话讲,就是相当于在配置文件中增加一个元素,使用组件扫描,可以简化spring的配置文件;
如何进行组件扫描:
1)在spring配置文件中,添加<context:component-scan base-package=""/> 开启注解扫描,其中,
base-package指定要扫描的包;
2)在类名前添加相应的注解
@component @Repository ->持久化层 @Service ->业务层 @Controller ->控制层
作用域:@Scope来指定,值可以是prototype和singleton
生命周期相关方法:@PostConstruct @PreDestroy
延迟加载:@Lazy(true)
@ResponseBoby作用:将Controller方法返回的对象,通过适当的HTTPMessageConvertor转换为指定格式
后,写入到Response对象的boby数据区;
使用时,返回的数据不是HTML标签的页面,而是其它格式的数据eg:Json,xml;
使用注解注入依赖关系
1)@Autowired和@Qualifier :该注解支持构造器注入和set注入;
2)@Resource :支持set方法注入,也可加到属性前;