SpringMVC Spring Aop 和一些项目需要的注解解析
SpringMVC

1.客户端请求-->dispatcherServlet接收
1.根据用户请求进入dispatcherServlet
通过 HandlerMapping 找到对应 Controller
2.handerlerMapper根据用户请求进入dispatcherServlet
HandlerAdapter 调用 Controller 方法
3.根据handerlerMapper获取拦截(字符串处理很快)器获取地址获取配置需要
4.提取需求列表然后取出执行目标controller 执行后参数和地址
5.执行参数进行执行通过后置进行处理request 转向需要逻辑地址根据前缀后缀来得到物理地址解析后获取具体的view进行渲染页面操作生成一个静态界面获取拦截(字符串处理很快)器获取地址获取配置需要
6.提取需求列表然后取出执行目标controller 执行后参数和地址
Controller 处理业务,返回 ModelAndView
Controller 处理业务,返回 ModelAndView
7.执行参数进行执行通过后置进行处理request 转向需要逻辑地址根据前缀后缀来得到物理地址解析后获取具体的view
渲染页面,响应给客户端
8.进行渲染页面操作生成一个静态界面
spring框架

1.IOC控制反转(ioc容器提供啥用啥)
2.依赖注入(DI)单例模式
3.面向切面的编程
四大注解:
写在类上就可以放到ioc容器的注解:(都是把当前类对象放入到ioc容器中key是类名首字母小写)
以下四个是在类上写
@Controller
@Service
@Component
@Repositry
组件:不在这三层中需要用这些注解
@Mapper(在接口上写)
mybatis提供修饰mapper接口不在写实现类
自动生成一个该接口的实现类(告别mybatis工具类)
@Autowire拿属性
AOP面向切面编程

切面通过切点表达式连接连接点和植入方法切面相当于三明治或者U盘即插即用
Aop底层
cglib和jdk动态代理
cglib底层是重写
jdk动态代理底层
反射是啥?
在程序运行时,拿到类的结构(类名,方法,属性)并且可以调用他们的方法的过程.
反射有啥用?
1.动态创建对象
2.动态调用方法
jdk动态代理是啥?
他是Spring AOP的底层实现之一.
专门用来不改变原有代码的前提下增加代码功能.
jdk动态代理和cglib代理的区别?
要用jdk动态代理
必须要有接口,底层是用多态和反射来实现接口.
生成速度快执行稍慢.
要用CGLIB代理
不需要接口,底层是用继承和重写方法实现
代理不了final类和final方法常量类常量方法
关于一些项目注解的解析
| 注解组合 | 适用场景 | 返回结果 |
|---|---|---|
| @Controller + 方法返回 String | 传统后端渲染 | 跳转到 JSP/Thymeleaf 页面 |
| @Controller + @ResponseBody | 混合模式 | 部分接口返回数据,部分跳转页面 |
| @RestController | 纯前后端分离 | 所有方法都返回 JSON / 文本 |
| @RequestBody | 接收 JSON 参数 | 自动封装为 Java 对象 |
浙公网安备 33010602011771号