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依赖注入实现。
IOC让对象的创建不用去new了,可以由spring自动生产,使用java的反射机制,根据配置文件在运行时动态的去创建对象以及管理对象,并调用对象的方法的。依赖注入的方式有几种:构造器注入、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注解
@RequestMapping:用于处理请求 url 映射的注解 @RequestBody:注解实现接收http请求的json数据,将json转换为java对象。 @ResponseBody:注解实现将conreoller方法返回对象转化为json对象响应给客户。 @RequestParam:注解实现接收http请求的数据。 10 spring Aop理解:数据权限、日志、事务处理 AOP面向切面,用于与业务无关,但却对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块被命名为“切面”(Aspect)类名上增加注解@Aspect,定义切点@Pointcut。 实现的关键:代理模式 (1)静态代理:AspectJ,AOP框架在编译阶段生成AOP代理类, (2)动态代理:每次运行时在内存中临时为方法生成一个AOP对象,这个对象包含了全部方法,在特定的切点做了增强,并回调原对象的方法。 11 Spring框架用了哪些设计模式 (1)工厂模式:BeanFactory就是简单工厂模式的体现,用来创建对象的实例; (2)单例模式:Bean默认为单例模式。 (3)代理模式:Spring的AOP功能用到了JDK的动态代理和CGLIB字节码生成技术; (4)模板方法:用来解决代码重复的问题。比如. RestTemplate, JmsTemplate, JpaTemplate。 (5)观察者模式:定义对象键一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知被制动更新,如Spring中listener的实现--ApplicationListener。标签:常见问题,对象,spring,bean,Spring,注解,注入,描述 From: https://www.cnblogs.com/guobm/p/17269472.html