天天看点

SpringBoot

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&lt;&gt;()// 扩展 ); }</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
上一篇: SpringBoot
下一篇: SpringBoot