spring mvc实现原理
- 客户端发送请求到dispacherservlet(分发器)
- 有dispacherservlet控制器查询handemapping,找到处理请求的controller
- controller处理完请求后,返回modelandview
- 有dispacherservlet查询试图解析器,找到modelandview制定的视图
- 视图负责将结果展示给客户端
spring aop的应用场景
- 性能检测
- 访问控制,安全控制
- 日志管理
- 事务
spring aop的实现原理
AOP是基于动态代理实现的
代理的三种方式
- 静态代理
- JDK动态代理
- CGLIB代理
spring mvc拦截器和处理全局异常
拦截器
- 实现handlerInterceptor接口
- 重写preHandle方法,验证是不是管理员
- 在dispacter-servelt.xml中配置会拦截的请求(过滤器是在web.xml中)
处理全局异常
- 实现handlerExceptionResolver接口
- 重写resolveException方法,返回的是modelandview对象,在系统抛异常时给用户友好的提示
spring boot和spring mvc区别
- spring mvc需要配置大量的xml文件,而boot能实现自动配置
- boot内嵌服务器
- boot集成大量第三方配置库,开箱即用
spring boot特点
- 创建独立的Spring应用程序
- 嵌入的Tomcat,无需部署WAR文件
- 简化Maven配置
- 自动配置Spring
- 提供生产就绪型功能,如指标,健康检查和外部配置
- 绝对没有代码生成和对XML没有要求配置
常见的starter
1.web
2.test
3.jpa
4.redis
5.mybatis
6.jdbc
7.mail
8.thymeleaf
9.security
10.websocket
复制代码
spring ioc
1.注入的三种方式
- 属性注入(setter方法)
- 构造注入
- 接口注入
2.ioc容器通过反射机制,实例化bean并建立bean之间的依赖关系
Bean就是由Spring IOC容器初始化、装配及被管理的对象。
拦截器和过滤器的区别和联系
过滤器
依赖于servlet容器,几乎对所有请求都可以过滤,缺点是一个过滤器实例只能初始化一次,通常做一些过滤操作,获取我们想要的数据
拦截器
只能对controller进行拦截,依赖与web框架所以可以调用spring的依赖注入,不依赖于servlet容器,基于反射机制,属于aop的一种应用
spring boot自动配置原理
在spring的启动类上添加@springbootapplication或@enableAutoConfiguration注解,会自动的去meaven中读取每个stater中的spring.factories文件,该文件配置了所有需要被创建spring容器中的bean
spring中运用到的设计模式
- bean单例模式
- beanfactory工厂模式
- aop动态代理 代理模式
- 观察者模式
Spring通过@Transaction注解技术来进行声明式事物配置。
spring Bean的生命周期
spring 只提替我们管理单例模式的bean,对于prototype模式的bean,spring创建后就不再管理,需要使用者手动去管理
生命周期
实例化
--->填充属性
--->调用各种 *Aware接口 详细请看spring bean的生命周期
--->调用定制的初始化方法
--->bean准备就绪
--->调用定制的bean销毁方法
初始化及销毁
- 注解方式:在 bean 初始化时会经历几个阶段,首先可以使用注解
@PostConstruct
,@PreDestroy
来在 bean 的创建和销毁阶段进行调用 - 实现initializingBean,DisposableBean接口也可以实现对Bean的初始化及销毁操作。
- 当然也可以自定义初始化和销毁的方法
实现*Aware接口
*Aware
接口可以用于在初始化 bean 时获得 Spring 中的一些对象