一.SpringBoot
1.Spring Boot的主要优点:
- 为所有Spring开发者更快的入门;
- 开箱即用,提供各种默认配置来简化项目配置;
- 内嵌式容器(Tomcat)简化Web项目;
- 没有冗余代码生成和XML配置的要求;
2.回顾
1.回顾什么是Spring? [Spring是一个开源框架,2003 年兴起的一个轻量级的Java 开发框架,作者:Rod Johnson。] Spring是为了解决企业级应用开发的复杂性而创建的,简化开发。 2.Spring是如何简化Java开发的 为了降低Java开发的复杂性,Spring采用了以下4种关键策略: 1、基于POJO的轻量级和最小侵入性编程,所有东西都是bean; 2、通过IOC,依赖注入(DI)和面向接口实现松耦合; 3、基于切面(AOP)和惯例进行声明式编程; 4、通过切面和模版减少样式代码,RedisTemplate,xxxTemplate;
项目结构:
项目名->
lifecycle:
clean: 清除;
validate: ;
compile: 编译;
package: 打包; [ ssm-> war包; springboot-> jar包; ]
verify: ;
install: ;
site: ;
deploy: ;
1.1 常用注解
@SpringBootApplication: 标注这个类是一个springboot的应用
在@SpringBootApplication之上的注解:
@Configuration : //表示这是一个配置类,和以前编写的配置文件一样,也可以给容器中添加组件;//启动指定类的ConfigurationProperties功能;
//进入这个HttpProperties查看,将配置文件中对应的值和HttpProperties绑定起来;
//并把HttpProperties加入到ioc容器中
@EnableConfigurationProperties({HttpProperties.class})//Spring底层@Conditional注解
//根据不同的条件判断,如果满足指定的条件,整个配置类里面的配置就会生效;
//这里的意思就是判断当前应用是否是web应用,如果是,当前配置类生效
@ConditionalOnWebApplication(
type = Type.SERVLET
)//判断当前项目有没有这个类CharacterEncodingFilter;SpringMVC中进行乱码解决的过滤器;
@ConditionalOnClass({CharacterEncodingFilter.class})//判断配置文件中是否存在某个配置:spring.http.encoding.enabled;
//如果不存在,判断也是成立的
//即使我们配置文件中不配置pring.http.encoding.enabled=true,也是默认生效的;
@ConditionalOnProperty
@ConfigurationProperties(prefix = “person”): 将配置文件中[ 如yml文件 ]配置的每一个属性的值, 映射到这个组件中;
@Aspect: 标明切面;
1.2 SpringBoot自动装配原理
1、SpringBoot启动会加载大量的自动配置类
2、我们看我们需要的功能有没有在SpringBoot默认写好的自动配置类当中;
3、我们再来看这个自动配置类中到底配置了哪些组件;(只要我们要用的组件存在在其中,我们就不需要再手动配置了)
4、给容器中自动配置类添加组件的时候,会从properties类中获取某些属性。我们只需要在配置文件中指定这些属性的值即可;
xxxxAutoConfigurartion:自动配置类; -> 给容器中添加组件
xxxxProperties:封装配置文件中相关属性;
1.3 路径
"classpath:/META-INF/resources/",
"classpath:/resources/",
"classpath:/static/",
"classpath:/public/"
总结:
1.在springboot中, 我们可以使用以下方式处理静态资源:
webjars: localhost:8080/webjars/
public, static, /** ,resources localhost:8080/
2.优先级: resources 上传的文件; > static 静态资源,比如图片等; > public 公共资源,比如js等;
3./resources/templates -> 只能通过Controller访问;
二. Thymeleaf模板引擎⭐
[参考链接1: https://blog.csdn.net/qq_40693171/article/details/107008457]
[参考链接2: https://fanlychie.github.io/post/thymeleaf.html]
1.Java的常用模板引擎 :
- Jsp;
- Velocity;
- Thymeleaf[非静态模板引擎] ; (springboot官方推荐方案)。
- Freemarker[静态模板引擎] ;
2.简介: Thymeleaf 是一个服务器端 Java 模板引擎,能够处理 HTML、XML、CSS、JAVASCRIPT 等模板文件。Thymeleaf 模板可以直接当作静态原型来使用,它主要目标是为开发者的开发工作流程带来优雅的自然模板,也是 Java 服务器端 HTML5 开发的理想选择。
1.用法前缀: th:
常用:
th:src="@{/...}" ->
2.链接: @{}
3.取值1: ${}
取值2(配置文件中的值): #{}或者[[#{}]];
1.引入Thymeleaf 命名空间:
<html xmlns:th="http://www.thymeleaf.org">
2.注意: 因为 HTML5 规范是不允许使用th:*这些非标准属性的。HTML5 规范是允许data-*这样自定义的属性的。th:*和data-th-*这两个符号是完全等效且可以互换的。但为了简单直观和代码的紧凑性,本文采用th:*的表示形式。
3.
2.1 简单表达式
语法 | 名称 | 描述 | 作用 |
---|---|---|---|
${…} | Variable Expressions | 变量表达式 | 取出上下文变量的值 |
*{…} | Selection Variable Expressions | 选择变量表达式 | 取出选择的对象的属性值 |
#{…} | Message Expressions | 消息表达式 | 使文字消息国际化,I18N |
@{…} | Link URL Expressions | 链接表达式 | 用于表示各种超链接地址 |
~{…} | Fragment Expressions | 片段表达式 | 引用一段公共的代码片段 |
2.1.1 ${…}
项目实际应用
<!-- 替换用法解释——以下用于静态时加载当前链接,当有服务器时则Thymeleaf会主动替换以下链接!
<th:block th:replace="admin/_fragments :: script">
解释: ①admin/_fragments ->指"路径/文件名";
②"::" 后连接fragment的模块名, 如此处的script -->
<!--/*/<th:block th:replace="admin/_fragments :: script">/*/-->
<script src="https://cdn.jsdelivr.net/npm/jquery@3.2/dist/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/semantic-ui/2.2.4/semantic.min.js"></script>
<!--/*/</th:block>/*/-->
三.项目开发: SpringBoot开发小而美的个人博客
1.Spring Data Jpa使用
项目周期: 2022.4.12 - 2022.4.24
1.前端: 1-19: 4
2.后端: 20-47: 24(少23)
3.碰到的问题:
问题排查:
1.前端->查看异常
2.后端->控制台查看错误 -> 没有生效(可能没有引入对应的文件)!
1.在JPA中PO类上的Table注解红色错误提醒 [参考链接: https://blog.csdn.net/piaoniu_1985/article/details/105678032]
2.页面命名
list 详情页
add 新增页
update 更新页面
3.实体关系
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2uzC9V96-1686703308671)(D:\MyAllCode\JavaCode_House\0_后端笔记\06_SpringBoot.assets\image-20220423125242376.png)]
插件:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XBVhA2JF-1686703308672)(D:\MyAllCode\JavaCode_House\0_后端笔记\06_SpringBoot.assets\image-20220425163549715.png)]