一.简述:Spring是一种开源轻量级框架,致力于J2EE应用的各种解决方案,而不仅仅专注于某一层解决方案。可以说Spring是企业应用开发的“一站式”选择, Spring贯穿于表现层、业务层、持久层。
二.Spring体系结构
1、 Spring Core:即,Spring核心,它是框架最基础的部分,提供IOC和依赖注入特性
2、 Spring Context:即,Spring上下文容器,它是BeanFactory功能加强的一个子接口
3、 Spring Web:它提供Web应用开发的支持
4、 Spring MVC:它针对Web应用中MVC思想的实现
5、 Spring DAO:提供对JDBC抽象层,简化了JDBC编码,同时,编码更具有健壮性。
6、 Spring ORM:它支持用于流行的ORM框架的整合,比如:Spring + Hibernate、Spring + iBatis、Spring + JDO的整合等等。
7、 Spring AOP:AOP即,面向切面编程,它提供了与AOP联盟兼容的编程实现
三.Spring常用组件
1.项目引用spring
(1)创建Maven工程spring-enjoy:
(2)pom.xml引入spring-context jar
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.6.RELEASE</version>
</dependency>
</dependencies>
(3)建立spring的beanx.xml
2.Spring常用组件详解
(1)@Configuration告诉Spring这是一个配置类
(2)@ComponentScan 扫描规则
1)指定扫描范围:
@ComponentScan value:指定要扫描的包
eg:
@ComponentScan(value="com.enjoy.cap2")表示扫描此目录下的包
可以建立测试用例进行测试
2)扫描过滤器
useDefaultFilters 默认是true,扫描所有组件,要改成false,使用自定义扫描范围
excludeFilters = Filter[] 指定扫描的时候按照什么规则排除那些组件
includeFilters = Filter[] 指定扫描的时候只需要包含哪些组件
useDefaultFilters = false 默认是true,扫描所有组件,要改成false
FilterType扫描规则如下
FilterType.ANNOTATION:按照注解
FilterType.ASSIGNABLE_TYPE:按照给定的类型;比如按BookService类型
FilterType.ASPECTJ:使用ASPECTJ表达式
FilterType.REGEX:使用正则指定
FilterType.CUSTOM:使用自定义规则,自已写类,实现TypeFilter接口
3)自定义过滤规则
FilterType.CUSTOM的例子,常用
a.先新增自定义过滤规则类:
b.在Cap2MainConfig申明
然后用上述Cap2Test测试用例截图进行调试。
(3)@Scope 扫描规则
1)单实例bean:没加@Scope之前, 默认的bean是单实例的,@Scope(“singleton”)
2)多实例bean:加入@Scope(“prototype”) 是多实例的
3)单实例bean和多实例的区别:
prototype: 多实例:IOC容器启动并不会去调用方法创建对象放在容器中,而是每次获取的时候才会调用方法创建对象
singleton: 单实例(默认):IOC容器启动会调用方法创建对象放到IOC容器中以后每交获取就是直接从容器(理解成从map.get对象)中拿
4)request和session
request: 主要针对WEB应用,同一次请求创建一个实例
session: 同一个session创建一个实例
(4)@lazy 懒加载
懒加载: 主要针对单实例bean,容器启动时候不创建对象, 仅当第一次使用(获取)bean的时候才创建被初始化