第一节,创建springboot工程
1、微服务
概念:微服务是一个新兴的软件架构,就是把一个大型的单个应用程序和服务拆分为数十个的支持微服务。一个微服务的策略可以让工作变得更为简便,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议
2、SpringBoot
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者
3、环境约束
- jdk1.8以上版本(java -version 可查看jdk)
- 2maven 3.3以上版本
4、目录结构
- static:静态资源文件
- templates:模板文件
- application.properties:配置文件
5、注意(Spring boot)
- springboot内置了Tomcat,不需要配置Tomcat,可以在application.properties对端口号等服务端信息进行配置
- SpringBoot将各个应用/三方框架 设置成了一个个"stater",要用哪个场景引入哪个场景即可"开箱即用"
- @SpringBootApplication:spring boot 的主配置类
- @SpringBootConfiguration包含@Configuration,表示“配置类”
- @EnableAutoConfiguration:使spring boot可以自动配置
6、运行SpringBoot主程序测试
@SpringBootApplication
public class FirstbootApplication {
public static void main(String[] args) {
SpringApplication.run(FirstbootApplication.class, args);
}
}
7、将程序打包成一个可以执行的jar包
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
8、总结
- 自己写的代码通过@SpringBootConfiguration自动帮我们配置
- 三方依赖通过@EnableAutoConfiguration开启使用即可
第二节,SpringBoot基本配置
一、SpringBoot默认使用的全局配置文件
- application.properites
- application.yml
- 作用:可以对一些默认配置值进行修改
- 注意:配置文件的名称是固定的
二、如何修改springBoot的默认配置
模式:
- SpringBoot在自动配置组件的时候,会先看容器中有没有用户自己配置的(@Bean、@Component)如果没有才自动配置,如果有些组件可以有多个(ViewResolver),会将用户的配置和自己的默认的结合起来
三、.yml(YAML)
YAML(YAML Ain’t Markup Language)一种简洁的标记语言的文件,以数据为中心比json、xml等更适合做配置文件
sercer:
port:8090
四、.yml基本语法
1、语法规则
- 大小写敏感
- 使用缩进表示 层级关系
- 缩进时不允许使用 tab键,只允许使用空格
- 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
2、值的写法
- 字符串默认不用加上单引号或者双引号
- “”:双引号:不会转义字符串里面的特殊字符,特殊字符会作为本身想表示的意思
- ‘’:单引号:会转义特殊字符,特殊字符终只是一个普通的字符串数据
- 对象 (对象的一组键值对,使用冒号结构表示)
#普通写法
firends:
name: 张三
age: 20
#行内写法
firends: {
name: 张三,age: 20}
- 数组 (用值表示数据中的一个元素)
#普通写法
person:
- student
- boss
- teacher
#行内写法
person:[student, boss, teacher]
- Map (直接使用键值对)
#普通写法
name: tian
age: 12
#行内写法
{
name: tian, age: 12}
五、配置文件
-
配置文件乱码解决方式
-
@Value获取值和@ConfigurationProperties获取值比较
功能 @ConfigurationProperties @Value 指定方式 批量注入配置文件中的属性 一个个指定 松散语法 支持 不支持 SpEl 不支持 支持 JSR303数据校验 支持 不支持 -
@Property Source & @ImportResource的区别
@Property Source:加载指定的配置文件
@ImportResource:导入Spring的配置文件,让配置文件里面的内容生效
六、配置文件占位符
-
随机数
${ random.value} ${ random.int} ${ random.long} ${ random.int(10)} ${ random.int(1024,65536)}
-
可使用占位符获取之前配置的值,如果没有可以用 “:”指定默认值
七、激活指定profile
-
在配置文件中指定 spring.profiles.active=dev
-
命令行:
java-jar spring-boot-config-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev;
-
虚拟机参数
-Dspring.profiles.active=dev
八、配置文件加载位置
-file:./config/
-file:./
-classpath:./config/
-classpath:/
优先级由高到低,高优先级的配置会覆盖低优先级的配置,同时互补;
九、自动配置原理
-
SpringBoot启动的时候加载主配置类,开启了自动配置功能@EnableAutoConfiguration
-
每一个自动配置类进行自动配置功能
-
所有在配置文件中能配置的属性都是在xxxxProperties类中封装,可以参照功能对应的属性类
-
我们能配置的属性都是来源于Properties
-
一但配置类生效,配置类会给容器中添加各种组件,组件的属性是从对应的properties类中获取的,properties类里面的每一个属性又是和配置文件绑定的
-
精髓:①、SpringBoot启动会加载大量的自动配置类
②、先看我们需要的功能有没有SpringBoot默认写好的自动配置类
③、再看这个自动配置类有哪些组件(要用的组件有,就不用自己配置了)
④、给容器中自动配置类添加组件的时候,会从properties类中获取属性,可以在配置文件中指定这些 属性的值
⑤、自动配置类必须在一定的条件下才能生效,可以通过配置debug=true打印自动配置报告
@Configuiation //表示这是一个配置类 @EnableConfiguiationProperties(xxx.class) //启动指定类的功能进行绑定 @ConditionalOnWebApplication //判断当前是否是web应用,如果是当前配置生效 @ConditionalOnClass(xxx.class) //判断当前项目有没有xxx类 //CharacterEncodingFilter:SpringMvc中进行乱码解决的过滤器 @ConditionalOnProperty //判断配置文件中是否存在某个配置 @Bean //给容器中添加一个组件
第三节,日志
一、常用日志框架
-
市面上常用的日志框架:JUL,JCL,jboss-Logging,logback,log4j,log4j2,slf4j…
日志门面 日志实现 JCL(jakarta Commons Logging)
slf4j(Simple Logging Facade for java)jboss-Logginglog4j
log4j2
JUL(java.util.logging)
Logbackspringboot选用slf4j和Logback
二、如何让系统中所有的日志都统一到slf4j
- 将系统中其他日志框架先排除掉
- 用中间包来替换原有的日志框架
- 导入slf4j其他的实现
- SpringBoot能自动适配所有的日志,如果要引入其他框架,一定要把其他框架的默认日志依赖移除掉
- 查看依赖关系:右击Diagram→Show Dependencies…
三、日志配置的修改与格式
-
日志输出配置修改
#指定日志级别 logging.level.com.sboot.firstboot=trace #指定输出日志位置 logging.path=/spring/log #指定控制台输出日志格式 logging.pattern.console=控制台日志 #指定文件输出日志格式 logging.pattern.file=文件日志 #激活开发环境 spring.profiles.active=dev #禁用缓存 spring.thymeleaf.cache=false
-
日志输出格式
%d:表示日期时间
%thread:表示线程名
%-5level:表示级别从左显示5个字符宽度
%logger{50}:表示logger名字最长50个字符,否则按照句点分割
%msg:表示日志消息
%n:表示换行
eg:%d{yyyy-MM-dd} [%thread] %-5level %logger{50} - %msg%n
-
指定配置
logback.xml:直接被日志框架识别了
logback-spring.xml:日志框架不加载,由springBoot加载,可使用springboot的高级功能
第四节,SpringBoot WEB开发
一、开发步骤
- 创建SpringBoot应用,选中我们需要的模块、、、、、
- 在配置文件中指自己编写业务代码
二、SpringBoot对静态资源的映射规则
-
webjars:以jar包的方式引入静态资源
-
访问当前项目静态资源
"classpath:/META-INF/resources" "classpath:/resources" "classpath:/static" "classpath:/public" "/" //当前项目根路径
-
欢迎页/首页 默认访问静态资源文件夹下的 index.html
-
网页图标默认访问静态资源文件下的 /favicon.ico
三、模板引擎
常用引擎:jsp、Velocity、Freemarker、thymeleaf(Spring推荐)
-
Thymeleaf使用&语法:
把HTML页面放在classpath:/templates/下 Thymeleaf就可以自动渲染
使用:
①导入thymeleaf的语法空间
<html lang="en" xmlns:th="http://www.thymelealf.org"/>
②使用thymeleaf语法
四、扩展和接管SpringMVC
1)扩展SpringMVC
方法:编写一个配置类(@Configuration),是WebMvcConfigurAdapter类型,不能标注@EnableWebMvc,SpringBoot既保留了自动配置,也能