一.简述: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常用组件

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")表示扫描此目录下的包

可以建立测试用例进行测试

Spring专题全面解析(面试必备)

2)扫描过滤器

Spring专题全面解析(面试必备)

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.先新增自定义过滤规则类:

Spring专题全面解析(面试必备)

b.在Cap2MainConfig申明

Spring专题全面解析(面试必备)

然后用上述Cap2Test测试用例截图进行调试。

(3)@Scope 扫描规则

1)单实例bean:没加@Scope之前, 默认的bean是单实例的,@Scope(“singleton”)

2)多实例bean:加入@Scope(“prototype”) 是多实例的

3)单实例bean和多实例的区别:

prototype: 多实例:IOC容器启动并不会去调用方法创建对象放在容器中,而是每次获取的时候才会调用方法创建对象

singleton: 单实例(默认):IOC容器启动会调用方法创建对象放到IOC容器中以后每交获取就是直接从容器(理解成从map.get对象)中拿

4)requestsession

request:  主要针对WEB应用,同一次请求创建一个实例

session:  同一个session创建一个实例

(4)@lazy  懒加载

 懒加载: 主要针对单实例bean,容器启动时候不创建对象, 仅当第一次使用(获取)bean的时候才创建被初始化

 

相关文章: