springboot
父依赖
往里点
这个才是真正管理springboot应用里面所有依赖版本的地方,springboot的版本控制中心
spring-boot-starter 启动器
作用:标注在某个类上说明这个类是springboot的主配置类 , springboot就应该运行这个类的main方法来启动springboot应用;进入这个注解:
对应xml配置中的元素,作用 : 自动扫描并加载符合条件的组件或者bean,将这个bean定义加载到ioc容器中
作用 : springboot的配置类,标注在某个类上,表示这是一个springboot的配置类
进入这个注解:
@configuration 说明这是一个配置类,配置类就是对应spring的xml配置文件; @component 说明启动类本身也是spring中的一个组件而已,负责启动应用
开启自动配置功能,以前需要自己配置的东西,现在springboot可以自动帮我们配置
进入@enableautoconfiguration中
进入@autoconfigurationpackage中
spring底层注解,给容器中导入一个组件
registrar.class 作用 : 将主启动类的所在包及下面所有子包里面的所有组件扫描到spring容器
给容器导入组件,autoconfigurationimportselector自动配置导入选择器。
进入这个类,有这样一个方法
这个方法又调用了 springfactoriesloader 类的静态方法,进入这个类的loadfactorynames()方法:
继续进入loadspringfactories()方法:
spring.factories出现了很多次,全局搜索它
进入后看见很多配置,这就是自动配置的根源。点击 webmvcautoconfiguration 进入。
可以看见这是一个javaconfig配置类,注入了很多bean。
总之,自动配置真正实现是从classpath中搜寻所有的meta-inf/spring.factories配置文件,并将其中对应的 org.springframework.boot.autoconfigure. 包下的配置置顶,通过反射实例化为对应标注了@configuration的javaconfig形式的ioc容器配置类,然后将这些都汇总成为一个实例并加载到ioc容器中。
总结
springboot在启动的时候从类路径下的meta-inf/spring.factories中获取enableautoconfiguration指定的值
将这些值作为自动配置类导入容器,自动配置类就生效,帮我们进行自动配置工作
整个j2ee的整体解决方案和自动配置都在springboot-autoconfigure的jar包中
它会给容器中导入非常多的自动配置类(xxxautoconfiguration),就是给容器中导入这个场景需要的所有组件,并配置好这些组件
有了自动配置类,免去了我们手动编写配置注入功能组件登工作
这个类主要做了一下四件事情:
推断应用的类型是普通的项目还是web项目
查找并加载所有可用初始化器,设置到initializers属性中
找出所有的应用程序监听器,设置到listeners属性中
推断并设置main方法的定义类,找到运行的主类
查看构造器:
![springboot-run()](c:\users\10466\pictures\camera roll\springboot-run().jpg)
@validated 类注解 : 数据校验 @email(message="") 只能为邮箱 @null 验证对象是否为null @notnull 验证对象是否不为null, 无法查检长度为0的字符串 @notblank 检查约束字符串是不是null还有被trim的长度是否大于0,只对字符串,且会去掉前后空格. @notempty 检查约束元素是否为null或者是empty@max(value= ,message="") 不超过 @asserttrue 验证 boolean 对象是否为 true @assertfalse 验证 boolean 对象是否为 false
添加maven依赖
编写swaggerconfig配置类
访问测试 :http://localhost:8080/swagger-ui.html ,可以看到swagger的界面 配置swagger
swagger实例bean是docket,所以通过配置docket实例来配置swagger
<code>@bean //配置docket以配置swagger具体参数 public docket docket() { return new docket(documentationtype.swagger_2); }</code>
通过apliinfo()属性配置文档信息
<code>//配置文档信息 private apiinfo apiinfo() { contact contact = new contact("联系人名字", "http://xxx.xxx.com/联系人访问链接", "联系人邮箱"); return new apiinfo( "swagger学习", // 标题 "学习演示如何配置swagger", // 描述 "v1.0", // 版本 "http://terms.service.url/组织链接", // 组织链接 contact, // 联系人信息 "apach 2.0 许可", // 许可 "许可链接", // 许可连接 new arraylist<>()// 扩展 ); }</code>
docket实例关联上apliinfo()
<code>@bean public docket docket() { return new docket(documentationtype.swagger_2) .apiinfo(apiinfo()); }</code>
通过select()方法配置怎么扫描接口
<code>@bean public docket docket() { return new docket(documentationtype.swagger_2) .apiinfo(apiinfo()); .select() .apis(requesthandlerselectors.basepackage("类路径")) .build(); }</code>
swagger注解简单说明@api(tags="xxx模块说明")作用在模块类上@apioperation("xxx接口说明")作用在接口方法上@apimodel("xxxpojo说明")作用在模型类上:如vo、bo@apimodelproperty(value = "xxx属性说明",hidden = true)作用在类方法和属性上,hidden设置为true可以隐藏该属性@apiparam("xxx参数说明")作用在参数、方法和字段上,类似@apimodelproperty
在主启动类上加@enableasync注解,开启异步注解功能
在方法上添加@async注解
创建一个scheduleservice
在主启动类上加@enablescheduling注解,开启异步注解功能
cron表达式:http://www.bejson.com/othertools/cron/
引入pom依赖
配置文件
基础工程搭建
数据库设计
article:文章表
<col>
字段
备注
id
int
文章的唯一id
author
varchar
作者
title
标题
conent
文章的内容
建表sql
配置数据源
静态资源过滤
实体类
mapper接口
告诉springboot mybatis的映射配置文件的位置
页面
编写controller
前端js中添加图片上传配置
后端请求,接收保存这个图片,需要导入fastjson的依赖
设置虚拟目录映射,解决文件回显的问题
手动下载表情包,放到图片路径下,修改editormd.js文件
文章展示,在controller中增加方法
编写article.html