
前言
工具
Swagger
接口规范工具,通过注释的形式来规范接口的书写,并将其以可视化的形式展示出来,使得前后端分离变得更加的便捷
- 将项目中所有的接口展现在页面上,这样后端程序员就不需要专门为前端使用者编写专门的接口文档;
- 当接口更新之后,只需要修改代码中的 Swagger 描述就可以实时生成新的接口文档了,从而规避了接口文档老旧不能使用的问题;
- 通过 Swagger 页面,我们可以直接进行接口调用,降低了项目开发阶段的调试成本。
- 通俗的来讲,Swagger 就是将项目中所有(想要暴露的)接口展现在页面上,并且可以进行接口调用和测试的服务。
【Spring】迅速将Swagger规范纳入自身的标准,建立了Spring-swagger项目,后面改成了现在的Springfox。通过在项目中引入Springfox,可以扫描相关的代码,生成该描述文件,进而生成与代码一致的接口文档和客户端代码。这种通过代码生成接口文档的形式,在后面需求持续迭代的项目中,显得尤为重要和高效。
使用
- 添加依赖
- 开启Swagger功能
- 配置Swagger文档摘要信息
- 调用接口访问
注解
@Api()
- 用于类;表示标识这个类是swagger的资源
- tags – 表示说明,如果有多个值,会生成多个list
- value – 也是说明,可以使用tags替代
1 |
|
@ApiOperation()
- 用于方法;表示一个http请求的操作
- value - 用于方法描述
- notes - 用于提示内容
- tags - 可以重新分组(视情况而用)
@ApiParam()
- 用于方法,参数,字段说明;表示对参数的添加元数据(说明或是否必填等)
- name – 参数名
- value – 参数说明
- required – 是否必填
1 |
|
@ApiModel()
- 用于类 ;表示对类进行说明,用于参数用实体类接收
- value - 表示对象名
- description – 描述
- (都可省略)
1 |
|
@ApiModelProperty()
- 用于方法,字段; 表示对model属性的说明或者数据操作更改
- value – 字段说明
- name – 重写属性名字
- dataType – 重写属性类型
- required – 是否必填
- example – 举例说明
- hidden – 隐藏
1 | private String username; |
@ApiIgnore()
- 用于类或者方法上,可以不被swagger显示在页面上,比较简单, 这里不做举例
@ApiImplicitParam()
用于方法,表示单独的请求参数
name – 参数名
value – 参数说明
dataType – 数据类型
paramType – 参数类型
example – 举例说明
@ApiImplicitParams()
用于方法,包含多个 @ApiImplicitParam
1
2
3
4
5
6
7
8
9
10
public AjaxResult sendEmailCode( String type,
String emailAddress){
return loginService.sendEmailCode(type, emailAddress);
}
JRebel
- JRebel是一款JVM插件,实时监控java代码的状态,它使得Java代码修改后不用重启系统,立即生效。
- 主要针对 Java + Tomcat 的 web 项目
- IDEA上原生是不支持热部署的,一般更新了 Java 文件后要手动重启 Tomcat 服务器,才能生效,浪费时间浪费生命。
- 目前对于idea热部署最好的解决方案就是安装JRebel插件。
破解
在激活页面的 connect online licensing service
选项下面填入激活码地址(邮箱号随意)
代理地址格式:https://jrebel.qekang.com/{GUID}
GUID生成:在线生成GUID地址
使用
开启 compile 的属性:Build project automatically
勾选全部选项

使用右上角的图标运行

1、Tomcat
2、Spring Boot
Web
注解
@ResponseBody
@Controller
@RestController
相当于 @Controller + @ResponseBody 两个注解的结合,返回json数据不需要在方法前面加@ResponseBody注解了,但使用@RestController这个注解,就不能返回jsp,html页面,视图解析器无法解析jsp,html页面
- 如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,配置的视图解析器InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容
- 例如:本来应该到success.jsp页面的,则其显示success.
- 如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行。
- 如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。
Spring
Spring 框架的核心特性是可以用于开发任何 Java 应用程序,但是在 Java EE 平台上构建 web 应用程序是需要扩展的。 Spring 框架的目标是使 J2EE 开发变得更容易使用。
体系结构:
Spring MVC
Spring Boot
启动类:
1 |
|
注解
@SpringBootApplication
- 启动类注解
- 它组合了多个注解,如@componentScan、@SpringBootConfiguration、@EnableAutoConfiguration。这些注解自动开启了自动扫描、依赖注入、自动配置等功能,而且main里的方法又加载了监听器、过滤器、拦截器等功能
- (具体查看SpringApplication.run方法的源码)
@SpringBootTest
该注解是用到类名上,表示自动启动加载类或指定某个或多个加载启动类,默认会加载当前module下的启动类
Spring Security
Spring Security 是 Spring 家族中的一个安全管理框架,实际上,在 Spring Boot 出现之前,Spring Security 就已经发展了多年了,但是使用的并不多,安全管理这个领域,一直是 Shiro 的天下。
相对于 Shiro,在 SSM/SSH 中整合 Spring Security 都是比较麻烦的操作,所以,Spring Security 虽然功能比 Shiro 强大,但是使用反而没有 Shiro 多(Shiro 虽然功能没有 Spring Security 多,但是对于大部分项目而言,Shiro 也够用了)。
自从有了 Spring Boot 之后,Spring Boot 对于 Spring Security 提供了 自动化配置方案,可以零配置使用 Spring Security。
因此,一般来说,常见的安全管理技术栈的组合是这样的:
- SSM + Shiro
- Spring Boot/Spring Cloud + Spring Security
注解
@PreAuthorize()
- 可以用来控制一个方法是否能够被调用
@PreAuthorize("@ss.hasPermi('monitor:logininfor:export')")
- @ss标签对应的
PermissionService
- 调用service的
hasPermi
方法 - 传入参数为
monitor:logininfor:export
,表示用户的查询权限
- @ss标签对应的
Controller层
1 |
|
Service层
1 |
|
@PermitAll
@PermitAllScope
SSH
SSM
Spring + SpringMVC + MyBatis
项目目录结构:

- Post title:Java框架
- Post author:Wei Jieyang
- Create time:2021-06-22 11:47:39
- Post link:https://jieyang-wei.github.io/2021/06/22/Java框架/
- Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.