spring总结
spring的三大特性:IOC(控制反转)和DI(依赖注入)以及AOP(面向切面编程)
IOC(控制反转):
控制反转,即将创建对象的工作由自己交给了spring容器来完成,由spring容器来维护依赖关系,来掌控对象的生命周期。
DI(依赖注入)
依赖注入:将值通过配置的方式为变量初始化。DI带来了松耦合,没有DI,对象需要和其依赖的对象一起初始化,这样造成了紧密耦合。
AOP(面向切面编程)
面向切面编程就是在运行时,动态地将通知(增强的代码)织入到类的指定方法、指定位置上的编程方式
依赖注入的三种方式:
(1)构造方法注入
(2)setter注入
(3)基于注解的注入
spring容器:
对象生存于spring容器中,spring容器负责创建对象,配置并管理它们的整个生命周期,最后销毁它们。
spring容器分为bean工厂和应用上下文:常用应用上下文。
装配:创建应用对象的协同关系
装配的3种方式:
在XML中进行显式配置
在JAVA中进行显式配置
隐式的bean发现机制和自动装配
@Component
在一个类上使用@Component,表示将为这个类会作为组件类,并且告诉spring要为这个类创建一个bean
@Autowired
自动装配,是让spring自动满足bean依赖的一种方法,spring会自动从应用上下文中寻找所需的bean。
@Bean
在一个方法上使用@Bean,表示Spring这个方法将会返回一个对象,这个对象要注册为Spring应用上下文中的bean。
@Component和@Bean的区别
@Bean的意思是,创建bean的时候,spring容器要按照方法内的方式去装配。
@Component的意思是,创建bean,而装配的方式是自动的。
bean的作用域
所有spring应用:
singleton:单例模式,在整个Spring容器中,只创建bean的一个实例
prototype:原型模式,每次通过spring应用上下文获取的时候,都会创建一个新的bean实例
springweb应用:
request:为每个请求创建一个bean实例
session:为每个会话创建一个bean实例
spring创建的bean默认为单例模式
优点:性能高,减少垃圾回收
缺点:多线程下可能不安全
SpringMVC
SpringMVC的工作流程:
一个请求首先会来到中央处理器,中央处理器需要知道应该调用哪个具体的处理器,因此先向处理器映射器查询,处理器映射器给中央处理器返回应该调用的处理器对象,之后中央处理器会通过处理器适配器调用具体的处理器,处理器执行完会返回ModelAndView给中央处理器。中央处理器得到ModelAndView之后需要经过视图解析器解析,解析之后的视图交给中央处理器渲染,流程结束。