-
springboot 应用零配置开发
springboot框架推荐使用注解式开发和环境配置,完全取代了原始的xml配置文件,
注解
声明bean注解
@mapper持久层
@service服务层
@repository 持久层
@controller 控制器
@Component (把普通pojo实例化到spring容器中)
注入bean注解
@Resource
@AutoWired
配置类,boot没有配置文件可以有配置类
@configuration 作用在类上,声明当前的类为一个配置类,相当于是一个xml配置文件啊
@componentScan 自动扫描包下的注解,
@component 注解的类实例化成bean
@bean 作用在方法上,声明当前方法返回值是一个bean对象
@value 获取properties配置文件的属性值 -
程序开发的学习过程演变
javaweb 就是servlet+jsp
ssm 框架 简化了开发流程,但是配置文件比较复杂
spring boot 一个框架整合项目+maven管理工具,
spring cloud 整理多个项目,项目就是服务, 就是微服务架构,程序= 数据结构+算法 程序员 程序 = 面向对象+框架 码农 项目架构的演变 单体架构 一个应用将所有服务封装到了一个应用中, 分布式 多个应用相互协调工作, 微服务架构 应用是由一系列小服务组成而成,将应用看做服务来进行管理 ,
-
第一个springboot项目 用idea来创建boot项目
-
spring boot框架的原理
自动装配:
在pom.xml文件中有一个parent的坐标 打开源码可以看到核心依赖在父工程中,
在引入一些boot依赖时不需要指定版本号,就因为是父项目中有版本仓库,
启动器:
boot的依赖都会封装到boot启动场景中,导入了什么启动器就等于导入了对应的依赖。
可以说想要使用什么功能,导入对应的启动器就好了,主程序:
-
yaml语法讲解
-
给实体赋值的方式
yaml可以直接给实体类赋值,
先在实体类中定义
在配置文件中编写值
测试开始
配置文件yml和properties都可以获取值,推荐使用yml
如果是想要得到某个值,可以使用@value
如果是对一个javabean对象进行赋值,直接使用@configurationProperties() -
jsr303校验
JSR-303是基于Bean的验证,那就是需要在Bean上加注解喽,
-
多环境配置和配置文件的位置
配置文件的位置可以是
project:./config/ 在项目下的config目录下
project: ./
classpath:/config/ 这个就是resources目录下的config目录下
classpath:/
以上四个地方都可以存放配置文件,
多个环境的具体指定 设置指定环境用active来指定,
配置文件的名字语法结构是application-{profile}.yml
profile表示是一个环境 dev 开发 test 测试 prod生产![在这里插入图片描述](https://img-blog.csdnimg.cn/20210620103928862.png) 还可以这样写 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210620104018286.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NzEyMDM0OA==,size_16,color_FFFFFF,t_70)
-
spring boot web
静态资源导入:
静态资源可以存放的位置:public static resources
动态资源存放位置是templates 存放基于模板层引擎技术的页面,是一个安全目录, 不允许直接访问,
static目录是存放静态资源 公开可以访问, -
thymeleaf模板引擎
springboot项目是以jar包的形式运行,不是war包,因为boot内嵌了tomcat,boot推荐使用Thymeleaf模板引擎处理页面数据不推荐使用jsp,
模板引擎的作用就是我们自己写一个页面,调用接口响应一些数据,有数据是动态的,写一些表达式来获取数据,有了数据和页面交给引擎来处理,引擎会把这些数据来处理放到指定位置,最终生成一个页面,不管是jsp还是thymeleaf都是模板引擎,区别就是语法会不一样,
首先第一步先引入thymeleaf模板依赖,
第二步在templates目录下创建页面
第三步写接口
总结:需要使用thymeleaf模板引擎,只需要导入依赖就可以了,boot是自动装配的,我们将html页面放到templates目录下即可,
如何使用thymeleaf页面
第一导入标签约束 命名空间
第二步是对标签进行数据添加 -
thymeleaf语法
th:text="${msg}" // 是 获 取 到 后 端 传 过 来 的 字 符 串 , t h : t e x t 是 在 标 签 中 输 出 文 本 值 , t h : u t e x t = " {}是获取到后端传过来的字符串,th:text是在标签中输出文本值, th:utext=" 是获取到后端传过来的字符串,th:text是在标签中输出文本值,th:utext="{msg}" //可以识别html标签的字符串
th:each=“user: u s e r s " t h : t e x t = " {users}" th:text=" users"th:text="{user}” each是用来遍历数组的,先获取到数组,赋值给user 然后在获取user具体的值
th:value 可以将一个值放到input标签中的value属性中
普通变量获取用${key}
url 数据用@{key}来获取
片段表达式用~{key}来获取 -
thymeleaf字符串的操作
thymeleaf提供了一些内置对象,内置对象可以直接在模板中使用,这些对象是以#号引用的,
使用内置对象的语法:
引用内置对象需要使用#,大部分内置对象的名称都以s结尾,strings,numbers,dates,
示例:
${#strings.isEmpty(key)} 判断字符串是否为空,如果为空返回true,否则返回的是false ,
${#strings.contains(key,‘t’)} 判断字符串是否包含指定的内容,如果包含返回 -
日期格式化处理
${#dates.format(key)} 对日期对象进行格式化处理,
${#dates.format(key,‘yyyy/MM/dd’)} 按照指定格式做日期转化,
-
条件判断
th:if 条件判断,
th:switch/th:case 显示匹配到条件数据,如果匹配到多个条件的话,只会选择第一个,
th:case="*" 表示java中的default,就是没有case的值为true时则显示这个内容,
-
迭代遍历
th:each 迭代器,用于循坏迭代集合
th:each的状态变量
index:当前迭代器的索引
count: 当前迭代对象的计数从1开始
size:被迭代的对象的长度,
遍历map集合要注意key和value的值
-
url表达式
语法:在Thymeleaf中url的表达式语法格式是@{}
url类型 绝对路径:
<a th:href="@{http://www.baidu.com}>绝对路径
相对路径
相对路径 / 对于当前目录来说
相对于服务器的 ~ 服务器 -
在url中传递参数
在普通格式中的url中传递参数,
在restful格式的url中传递参数
-
对Thymeleaf的常见配置,
-
mvc配置原理
想要扩展bootspringmvc 比如说:拦截器,视图控制,可以创建一个配置类就是在一个类上加上@Configuration并且实现了WebMvcConfigurer这个接口才算是可以设置mvc
想要diy一些定制化功能,只要写好这个组件,将他交给springboot后,boot会自动装配的,
-
springboot项目pom.xml配置文件中 parent 设置必须是boot starter parent 依赖了这个就依赖了大部分配置,可以导入相关插件 在plugin中 比如是maven插件,
Starter坐标是boot引入的全新坐标体系,集合了开发大部分开发场景,这里引入的坐标不像传统的maven坐标那样包含了版本号,在boot中引入starter系列坐标对应的版本库有父工程坐标统一控制, -
boot中的热部署
在应用运行中升级应用不需要重新启动, 热部署会自动检测有新代码改动,自动生成class文件,热部署原理是分成了两个加载器,一个加载不会改变的类,另一个去加载改变的类,
第一添加dev tools工具 依赖,
第二步在maven插件中添加devtools生效标记
第三步在修改配置文件,
第四步 设置idea自动检查编译, file-settings-compiler-build project automatically ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210621142234385.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NzEyMDM0OA==,size_16,color_FFFFFF,t_70) 设置Registry属性修改, ctrl+shift+alt+/ 选择Registry 勾选Compiler autoMake allow when app running ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210621142248999.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NzEyMDM0OA==,size_16,color_FFFFFF,t_70)
最后按ctrl+f9的自动编译,每次改完代码按一下就可以了,
-
springboot事务控制
springboot事务支持,在操作数据库时需要事务管理,springboot应用启动时会自动进行配置,在使用时通过注解方式标注相关方法,加入事务控制,
事务声明配置:@Transactional(propagation=Propagation.REQUIRED) -
Spring boot全局异常处理
在springboot应用中提供了对异常进行全局性的处理,如果没有这个全局异常处理的话,如果浏览器报错,会出现什么404,500 这些代码,用户看不懂啊
注解如下:
@ControllerAdvice 类上注解, 全局异常处理类
@ExceptionHandle 是方法上的注解,
-
springboot项目打包
springboot项目在打包时需要依赖一个打包插件, 也就是说是依赖maven来进行打包的,作用就是将boot项目依赖的jar包都会被打包在项目中,如果不用这个打包,也可以打包,只是不能包含boot依赖的jar包,
打包方式 命令打包 工具打包
-
springboot项目的启动
java -jar xxx.jar --spring.profiles.active={profile} 这个是运行boot项目的命令
在liunx系统中启动
安装上传下载工具:yum install lrzsz -y
上传命令:rz
下载 :sz 文件名
- springboot的日志管理
springboot默认使用logback组件作为日志管理,在boot中不需要添加Logback的依赖,在spring-boot-starter-web中包含了Logback依赖
logback组件读取配置是放在classpath下查找logback-test.xml ,如果没有那就找logback.xml 在没有就用自带的BasicConfiguration自动最小化配置,
配置logback.xml