DI:IOC的一种实现方式:构造方法注入+属性注入 实现原理:反射(通过类型和构造方法反射)+ASM字节码技术
Bean容器就是为了不再自己管理对象,而是交给Spring框架容器来进行管理——IOC(依赖控制反转,控制权有程序交给了Spring容器)
AOP名词概念: 面向切面编程 应用场景: 统一业务逻辑处理,如事务管理,统一日志管理,统一异常处理,统一返回类型处理 实现方式: 1、JDK实现;被代理类需要实现一个接口,运行时动态生成代理类
//被代理类 public class 被代理类 implements A接口{ public void doSomthing(); } //代理类 public class 代理类 implements A接口{ private 被代理类 对象; public 代理类(被代理类 O){ this.对象 = O; } public void doSomthing(){ 前置的统一业务(); 对象.doSomething(); 后置的统一业务(); } } Spring框架使用代理类完成工作。2、CGLIB实现:代理类继承被代理类——(被代理类不需要实现接口)
详细处理流程 1、DispacherServlet——在SpringBoot默认的处理路径为/**,表示所有请求都由该Servle来处理 2、HandlerMapping——处理请求映射:根据请求信息来映射服务资源 3、HandleAdapter——处理适配器 4、Controller——处理请求 5、返回视图
@Controller——类和方法上,注册一个处理Web请求的实例
@RestController:类上使用,方法默认都是@ResponseBody
@RequestMapping——类和方法上,表示接收请求的方式:如路径,请求方法,数据类型,少许和响应有关(数据类型) 服务提供的路径,由该注解路径,类和方法配置的路径字符串拼接,默认GET请求 在统一返回@ResponseBody时,可以使用简洁的注解 只提供某个请求方法的写法: @GetMapping:等同于@RequestMapping(method = RequestMethod.GET) @PostMapping:等同于@RequestMapping(method = RequestMethod.POST)
@PathVariable:映射路径变量 @RequestParam: 省略注解时,默认的注解 支持:基本数据 类型,包装类型,自定义类型 接收:url请求数据,请求体中k=v格式的数据 @RequestBody:根据raw类型中具体的数据类型,来完成请求体到对象的转换(反序列化)默认是接收application/json
HttpServletRequest/HttpServletResponse HttpSession
@ResponseBody:需要返回对象到指定数据类型(默认application/json)
注:不带@ResponseBody,表示返回某个服务资源(接收String返回值,表示资源路径) 转发写法:return“forward:路径” 重定向写法:return“redirect:路径” 注意: 1、路径是否以/开头,决定相对路径位置。 转发带/,以项目部署路径后为相对路径 重定向带/,会去掉项目部署路径 2、不带forward和redirect,为转发 带@ResponseBody:返回某个对象,序列化为某个指定格式的数据(默认json) 返回String,不会再序列化 返回null,响应体为空——项目开发时,自行封装。
作用:自动化配置,简化开发(SpringBoot提供的默认的一些配置,如web、jdbc、其他的功能,第三方框架使用SpringBoot的规范,完成自动化配置工作) 自动化配置原理: 扫描依赖包下,META-INF/SpringBoot配置文件(spring.factories等),根据内容完成加载配置,进一步完成配置类的初始化配置工作 MyBatis占位符 #(变量名):sql中如字符串,替换占位符“变量的值” $(变量名):sql中没有占位符,sql拼接,有些不需要带单引号的替换,需要使用,如字符串”abc“,order by 字段 $(变量名)