文章目录
Spring--------------------------------------------------------
概述
- Spring是Java EE编程领域的一个轻量级开源框架,由Rod Johnson开发,2004年发布了Spring框架的第一版。Spring是一个从实际开发中抽取出来的框架,因此它完成了大量开发中的通用步骤,留给开发者的仅仅是与特定应用相关的部分,从而大大提高了企业应用的开发效率。
- 主要技术:
- Spring Framework
- Spring Boot
- Spring cloud
- 系统架构:
核心概念
IoC(Inversion of Control)控制反转
-
使用对象时,由主动new产生对象转换为由外部提供对象,对象创建控制权由程序转移到外部。
-
Spring提供IoC容器,用来充当Ioc思想中的“外部”,降低代码的耦合度
-
IoC容器负责对象的创建、初始化等一系列工作,被创建或被管理的对象统称为Bean
-
在容器中建立Bean与Bean之间的依赖关系的整个过程,称为DI(Dependency Injection)依赖注入
操作:
-
在pom.xml中导入Spring包坐标[外链图片转存失败,源站可能有防盗链机制
-
配置对应的Bean
<bean id="随便取" class="类名"/>
-
获取IoC容器
ApplicationContext 容器名 = new ClassPathXmlApplicationContext("配置文件名称");
-
获取bean
容器名.getBean("自己取的id名"),再加上接口和转类型即可
-
删除业务层中使用new的方式创建的对象
-
提供对应的set方法
-
配置两个bean的关系(DI)
<bean id="" class =""> <property name="" ref=""/> <bean/>
-
bean实例化
- bean本质上就是对象,创建bean使用构造方法完成
- 使用实例工厂
- 使用静态工厂
-
bean自动装配
- 在bean装配行后加入autowire=(按类型/按名称/构造方法…)
注解开发
-
定义bean:
- 在对应的类上面加入@Component(“id”)
- 在bean配置中扫描组件
-
@Component注解的三个衍生注解
- @Controller:用于表现层bean定义
- @Service:用于业务层bean定义
- @Repository:用于数据层bean定义
-
作用范围:@Scope(“prototype/singleton”)
-
生命周期:
-
依赖注入:
- 在类中加入@Autowired
- 指定加载某一个bean@Qualifier(“…”)
XML配置与注解配置:
AOP
-
面向切面编程,知道开发者如何组织程序结构,在不惊动原始设计的基础上为其进行功能增强
-
例子:
-
思路流程:
-
导入坐标
-
制作连接点方法
-
制作共性功能
-
定义切入点: @Pointcut()
-
绑定切入点与通知关系
-
-
工作流程:
事务
- 在数据层或业务层保障一系列的数据库操作同成功同失败
SpringMVC-------------------------------------------------
概述
- SpringMVC是一种基于Java实现MVC模型的轻量级Web框架,用于进行表现层功能开发
主要操作
步骤
1.导入SpringMVC坐标与Servlet坐标
2.创建SpringMVC控制器类
3.初始化SpringMVC环境,设定SpringMVC加载中对应的bean
4.初始化Servet容器,加载SpringMVC环境,设置SpringMVC技术处理的请求
Postman:Postman是一款网页调试与发送网页HTTP请求的插件,常用于进行接口测试
bean加载控制:SpringMVC相关bean(表现层bean)
- Spring控制的bean
- 业务bean(Service)
- 功能bean(DataSource)
REST
-
表现形式转换
-
根据REST风格对资源进行访问称为RESTful
-
按照REST风格访问资源时使用行为动作区分对资源进行了何种操作
-
快速开发:
- 类注解:@RestController=@Controller和@ResponseBody,位于SpringMVC和RESTful开发控制器上方
- 方法注解:@GetMapping@PostMapping@PutMapping@DeleteMapping,位于SpringMVC和RESTful开发控制器定义上方
拦截器
-
一种动态拦截方法调用的机制,在SpringMVC中动态拦截控制器方法中的执行
- 在指定的方法调用前后执行预先设定的代码
- 阻止原始方法的执行
-
操作流程:
- 声明拦截器的bean,并实现HandlerInterceptor接口
- 定义配置类,继承WebMVCConfigurationSupport,实现addInterceptor方法
- 添加拦截器并设定拦截的访问路径,路径可以通过可变参数设置多个
- 执行流程
-
执行顺序:
- 当配置多个拦截器时,形成拦截器链
- 拦截器链的运行顺序参照拦截器添加顺序为准
- 当拦截器中出现对原始处理器的拦截,后面的拦截器均终止运行
- 当拦截器运行中断,仅运行配置在前面的拦截器的afterCompletion操作
SpringBoot-------------------------------------------------
概述
- Springboot是由Pivota团队提供的全新框架,其设计目的是简化Spring应用的初始搭建以及开发过程
基本操作
创建过程
1.在创建新模块时选择Spring Initializr
2.选择当前模块需要使用的技术集
3.开发控制器类
4.运行
- SpringBoot项目快速启动
- 前后端分离合作开发:后端人员将项目打成jar包发给前端人员,并且和前端人员连接同一个数据库即可
操作步骤:
1.对SpringBoot项目打包(执行Maven构建指令package)
2.执行启动指令:java -jar springboot.jar
注意事项:jar支持命令行启动需要依赖maven插件支持,请确认打包时是否具有SpringBoot对应的maven插件
起步依赖
- starter
- 定义当前项目使用的所有项目坐标,以达到减少依赖配置的目的
- parent
- 所有SpringBoot项目要继承的项目,定义了若干个坐标版本号,以达到减少依赖冲突的目的
- 实际开发:
- 使用任意坐标的时候,仅书写GAV中的G和A,V由SpringBoot提供
- 如发生坐标错误,再指定version
基础配置
格式
-
application.properties
- server.port=80
-
application.yml
-
server:
port:80
-
-
application.yaml
-
server:
port:82
-
YAML
- YAML:一种数据序列化格式
- 容易阅读
- 容易与脚本语言交互
- 以数据为核心,重数据轻格式
-
规则
- 大小写敏感
- 层级关系使用多行描述,每行结尾用冒号结束
- 使用缩进表示层级关系,同级左侧对其,用空格,不用Tab
- 属性值前面加空格
- #表示注释
-
数据读取方式
1.读取单个对象
2.封装全部数据到Environment对象
3.自定义对象封装指定数据
多环境开发配置
- 多环境启动
- properties文件多环境启动
- 配置文件分类
- file :config/application.yml 一级
- file :application.yml 二级
- classpsth :config/application.yml 三级
- classpath :application.yml 四级
- 一级与二级留做系统打包后设置通用属性
- 三集与四级用于系统开发阶段设置通用属性
MyBatisPlus------------------------------------------------
概述
- MyBatisPlus是基于MaBatis框架基础上开发的增强型工具,可以简化开发,提高效率
基础操作
操作步骤
1.创建模块
2.选择当前模块需要使用的技术集
3.手动添加mp起步依赖
4.设置JDBC操作
5.制作实体类与表结构(类名与表名对应,属性名与字段名对应)
6.定义数据接口,继承BaseMapper< user >
7.测试类中注入dao接口,测试功能
标准数据层CRUD
- Lombok,一个Java类库,提供了一组注解,简化POJO实体类开发
- 分页查询具体步骤:
1.设置分页拦截器作为Spring管理的bean
2.执行分页查询
- 条件查询:
1.常规格式
2.链式编程格式
3.null值处理
- 查询投影:
1.查询结果包含模型类中部分属性
2.查询结果包含模型类中未定义的属性
-
字段映射与表名映射:
- @TableField
- 属性注解
- 位于模型类属性定义上方
- 相关属性
- value:设置数据库表字段名称
- exist:设置属性在数据库字段中是否存在,默认为true
- @TableField
-
多记录操作:
1.按照主键删除多条记录
List<long> ids=Arrays.asList(new Long[]{2,3});
userDao.deleteBatchIds(ids);
2.根据主键查询多条记录
List<long> ids=Arrays.asList(new Long[]{2,3});
List<Users> userList =userDap.selectBatchIds(ids);
- 逻辑删除
1.数据库表中添加逻辑删除标记字段
2.实体类中添加对应字段,并设定当前字段为逻辑删除标记字段
3.配置逻辑删除字面值
乐观锁
1.数据库表中添加锁标记字段
2.实体类中添加对应字段,并设定当前字段为逻辑删除标记字段
4.使用乐观锁机制在修改前必须先获取到对应数据的version方可正常进行
学习中遇到的问题及解决--------------------------------
-
代码经检查没问题却报错或者异常
- 在做完一次操作后,应当在右侧Maven栏目刷新一下再运行
-
idea快捷键
- sout+enter:System.out.println();
- main+Enter:public static void main(String[] args) {}
- Alt+Insert:生成构造函数等