1 渊源 原型在200210由Rod Johnson发布的书中体现,后来在200403spring 1.0版本发布,201709spring 5.0发布,
(1)spring ioc 控制反转,管理容器中的bean,主要使用di依赖注入实现。
工厂模式,通过sessionFactory去注入实例。
(2)spring Aop 面向切面,调用者和被调用者解藕,用于权限、缓存等功能实现。
spring transaction
事务管理,一通过配置文件,二基于注解
spring mvc
数据,业务,展示分离
spring security
提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以spring应用上下文中配置的bean,为应用提供声明式的安全访问控制功能。
spring schedule
基于spring能用统一的配置和编码风格来使用schedule方案,支持Jdk time、concurrent、quartz
1.2 spring boot
由于spring的边界不断的进行扩充,导致了基础配置越来越复杂,spring boot应运而生,201404 springboot 1.0.0发布,其核心思想,约定大于配置。
引入web模块
<groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId>
开发环境调试
spring-boot-maven-plugin
json接口开发
@RestController
@RequestMapping(“/test”)
自定义filter
@Configuration
@Bean
自定义配置文件
@Component
@Value(“${asd.sdf}”)
1.3 spring cloud
基于spring boot开发,解决微服务架构中的服务治理而提供的开发框架。是一系列框架的有序集合,简化了分布式基础设施的开发,如发现注册,配置中心,消息总线,负载均衡,断路器,数据监控等。
2 Spring bean的作用域 :singleton、prototype、request、session 、global session
<bean=“” class=“” scope=“”/>
(1)singleton单例 缺省作用域:容器中只会存在一个共享的bean实例,无论多少个bean引用他,始终指向一个对象。
(2)prototype原型:每个bean都会创建一个新的bean实例。
(3)request:不同的http request产生不同的bean,该bean只在当前request有效。
(4)session :不同的http session产生不同的bean,该bean仅在当前session有效。
(5)global session:在一个全局的http session中,容器会返回该bean的同一个实例,仅在portlet context时有效
3 Servlet的生命周期:实例化、初始init、接收请求service、销毁destory
4 spring bean实例化顺序
实例化bean对象
设置对象属性(依赖注入)
检验aware相关接口并设置相关依赖
BeanPostProcessor前置处理
检查是否是initbean决定是否调用afterpropertiesset
检查是否配置有init-method
BeanPostProcessor后置处理,至此Bean就被创建了。
当bean不需要时,经过i清理阶段,如果实现了DisposableBean接口,则调用destory()
如果Spring中配置了destroy-method属性, 则调用销毁方法。
5 Spring中Autowired和Resource关键字的区别
相同点:都是bean注入时的注解,变量和setter方法上。
不同点:@Resource不是Spring的注解,包是javax.annotation.Resource,byName查找,从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常
@Autowired是Spring的注解,byType查找,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常。
6 spring ioc理解:控制反转,管理容器中的bean,主要使用di依赖注入实现。
依赖注入的方式有几种:构造器注入、setter方法注入、接口注入
(1)构造器注入:将被依赖对象通过构造函数的参数注入给依赖对象,并且在初始化对象的时候注入。
(2)setter方法注入:IoC Service Provider通过调用成员变量提供的setter函数将被依赖对象注入给依赖类。
(3)接口注入:依赖类必须要实现指定的接口,然后实现该接口中的一个函数,该函数就是用于依赖注入。该函数的参数就是要注入的对象。
7 什么是Spring:是一个轻量级的IOC和AOP容器框架,基于XML的配置,注解的配置,java的配置
主要有几个模块:Spring Core:是框架的核心,它控制着控制反转和依赖注入等特性、
Spring Context:在Core和Beans上产生,并提供了访问受限对象的媒介、
Spring AOP、Spring Dao、
Spring ORM:全称对象关系映射(Object/Relation Mapping),指将Java对象状态自动映射到关系数据库中的数据上。
Spring Web、Spring MVC
8 Spring MVC工作流程:核心前端控制器DispatcherServlet,Controller执行返回ModelAndView
9 Spring MVC注解