SpringBoot——打包成jar包,内嵌tomcat;微服务架构!
springCloud:整理扩展spring
配置文件详解:
https://zhuanlan.zhihu.com/p/57693064
约定大于配置
Spring Boot的主要优点:
-
为所有Spring开发者更快的入门
-
开箱即用,提供各种默认配置来简化项目配置
-
内嵌式容器简化Web项目
-
没有冗余代码生成和XML配置的要求
代码快速生成网站
创建spring项目:
新项目中修改配置文件:
修改端口号:
修改启动banner:
在resources目录下创建banner.txt文件。在其中输入要实现的内容:
自动配置:
pom.xml
核心依赖在父工程中
引入依赖时不需要指定版本,是因为有这些版本仓库
结论:springboot所有的自动配置,都是在启动的时候扫描并加载:spring.factories 所有的自动配置类都在这里,但是不一定生效,要判断条件是否成立,只要导入了对应的start,就有对应的启动器了。有了启动器,我们自动装配就会生效,然后配置成功
启动器:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter/artifactId> <scope>test</scope> </dependency>
启动器:springboot的启动场景
帮我们自动导入某个环境的所有依赖
会将所有场景变为一个个启动器
主程序:
注解:
@SpringBootApplication:标注这个类是一个springboot应用
@SpringbootConfiguration:springboot配置
@EnableAutoConfiguration:自动导入包
原理:
1、springboot在启动的时候,从类路径下/META/INF/spring.factories获取指定的值
2、将这些自动配置的类导入容器,自动配置就会生效。
3、以前需要手动配置的东西,现在spring帮我们做了
4.整合javaEE,解决方案和自动配置的东西都在下图这个jar包下:
5、他会把所有需要导入的组件,以类名的方式返回,这些组件就会被添加到容器
6、有了自动配置类,免去了我们手动配置文件的操作
启动运行:
Sptingapplication.run方法:启动了一个服务、
yaml语法
yaml是标记语言
配置文件
文件名是固定的,有两种:
1:application.properties
语法:key=value
2:application.yaml
语法:key:空格 value
给属性赋值:
第一种:使用注解@ConfigurationProperties(prefix="yaml中的对象名")
第二种:指定配置文件:@PropertySource(value="calsspath:...")
二:
配置文件yaml中可以使用EL表达式,
${person.hello:hello}
从person中取hello属性,若没取到,则设置为冒号后的值“hello”
松散绑定 :
java中的驼峰命名可以和yaml中的 ‘-’ 识别并匹配
jsr303数据校验:
@Validated
子注解
@Email(massage="邮箱格式错误")
配置文件的位置和优先级:
springboot多环境配置
选择激活哪一个配置文件
properties设置:
yaml设置:
使用 --- 分隔
写在一个文件里
SpringBoot Web开发
springboot帮我们自动配置了什么?能不能修改?修改哪些东西?
xxxxAutoConfiguration...向容器中自动配置组件
xxxxProperties:自动配置类,装配配置文件中自定义的一些内容
要解决的问题:
1、静态资源导入
2、编写首页
3、模板引擎Thymeleaf
4、装配扩展SpringMVC
5、增删改查
6、拦截器
7、国际化
1、静态资源
未自定义:
以下三个资源文件夹都有效且分1 2 3优先级
2、编写首页
名为index
在templates目录下的所有页面,只能通过controller跳转
修改 网页标签logo
导入图片到默认静态资源目录,修改名为favicon.ico即可(不显示的话,清缓存,重启浏览器)
3、模板引擎Thymeleaf
作用:写一些页面的模板
导入包
<!-- https://mvnrepository.com/artifact/org.thymeleaf/thymeleaf-spring5 -->
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring5</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.thymeleaf.extras/thymeleaf-extras-java8time -->
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-java8time</artifactId>
</dependency>
取值:
controller:
html:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>首页</title>
</head>
<body>
<h1 th:text="${msg}"></h1>
</body>
</html>
转译;
遍历数组,集合:
普通变量:
${}
国际化消息:
#{}
URL
@{}
片段表达式
~{}
文本
单引号 ' '
数字:直接写
空值:null
MVC配置原理
1、编写mvc配置类
扩展视图解析器:
@Configuration注解
package com.song.springbootweb.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.View;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.util.Locale;
//如果想自定义功能,只需要写这个组件,然后将它交给springboot,springbot就会帮我们自动装配
//扩展mvc
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
//public interface ViewResolver 实现了视图解析器接口的类,就可以把它看做视图解析器
@Bean
public ViewResolver myViewResolver(){
return new MyViewResolver();
}
public static class MyViewResolver implements ViewResolver{
@Override
public View resolveViewName(String s, Locale locale) throws Exception {
return null;
}
}
}
自定义日期格式化:
spring.mvc.format.date=
如果要扩展springmvc,官方建议我们这样做
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
//视图跳转
registry.addViewController("/song").setViewName("index");
}
}
在springboot中,有非常多的xxxxxconfiguration(配置类)帮助我们进行拓展配置,只要看见这个东西,我们就要注意