1、微服务:把原来一个项目中的多个功能模块。拆分成多个独立的项目。每一个独立的项目就是一个微服务。多个微服务组成一个项目。他们之间通过 网络协议来进行通信交互。
如:淘宝的支付模块 和 物流管理模块 和 订单模块。
2、SpringBoot可以 快速开发 微服务模块。
a、简化j2ee开发
b、可以整合spring技术栈。(整合springmvc、spring)
c、整合其他j2ee。(mybatis、redis)。
3、SpringBoot的准备工作
4、springboot的maven项目 目录结构介绍:
resources:
- static:放静态资源 (js css 图片 音频)
- templates:模板文件(模板引擎:freemarker, thymeleaf;默认不支持JSP文件)
- application.properties:放springBoot的配置。
5、SpringBoot 内置Tomcat,并且不需要打成war包 再执行。
可以在 application.properties中 对端口号等服务端 信息进行配置。
6、新建一个项目,当前项目依赖于 spring-boot-starter-parent ,spring-boot-starter-parent又依赖于 spring-boot-dependence。
spring-boot-dependence : 被称作 Spring的版本仲裁中心。
它的properties标签中里面规定了 多个依赖的版本。这些依赖的版本之间是 不会发生冲突的。 所以我们在给项目添加依赖时,是不需要 指定依赖的版本的。spring-boot-dependence 会给我们设置 不冲突的依赖版本。
spring-boot-starter-web:web场景依赖。//里面包含 与web项目有关的所有依赖jar。如:tomcat jar、json jar等。
springboot: 将各个应用/三方框架 封装成一个个的“ 场景” stater。当我们选择了某个场景,springboot会把 该场景 所需要的所有依赖jar 自动注入。
7、@SpringBootApplication 注解介绍:
@SpringBootApplication : 表明 此类为 springboot的主配置类。
写这一个注解,就相当于写了 如下的这么多的注解:
a、@ComponentScan: 开启注解扫描。
b、@SpringBootConfiguration:
此注解中包含了一个 @Configuration,凡是标识了 @Configuration , 表明此 类就是一个 配置类。该类的作用就是为了进行 配置。
作用如下:
①表明此 类就是一个 配置类。
等同于 写 配置文件 spring.xml。(写起来比较费劲)
②加了这个注解的类,会自动纳入到Spring的IOC容器中。
在Spring中的 配置类使用的是@Component注解,将配置类加入到容器中。
而在SpringBoot中使用的是 @Configuration。SpringBoot 推荐使用配置类,来代替配置文件。
c、 @EnableAutoConfiguration : 此注解 开启了SpringBoot 自动配置的功能。
原则: 约定优于配置。对于SSM中 必须的和 通常都要进行的一些配置进行自动的配置。
即:不需要再手动创建 mybatisConfig.xml,applicationContext.xml 等配置文件 进行配置。
只需要 提前约定好,springboot就会自动进行配置,就不用我们 人为的手写写那些配置文件了。
具体怎么进行自动配置?(源码解读)
其一: 有个注解 @AutoConfigurationPackage(位于@EnableAutoConfiguration注解中 )。
它的作用就是:
- ①:找到标注了@SpringBootApplication注解的类 所在的包com.yq.day01_helloworld,对此包 自动的进行scan注解扫描。 把标注了如@Controller@Service等注解的类,全部scanner 扫描 后,纳入到spring的 IOC容器中。
传统写法:
- 如果没有自动配置的话,就像ssm时那样,在springmvc.xml文件中需要写 一个标签 开启 scan 包的扫描。
现在:
- springboot有了自动配置后,不需要手动写 开启注解扫描的配置。它会自动配置好。
8、@AutoConfigurationPackage 和 @Import()的区别:
@AutoConfigurationPackage: 是把自己写的那些类。标注了 @Service @Component 注解的代码 加入到IOC容器中。
@Import(): 该注解中 通过selectImports()方法 ,就能把第三方依赖 或者 配置 引入到IOC容器中。
整个JavaEE开发的 所有jar包的Name的声明 存在于:spring.factories配置文件中。
SpringBoot在启动时,会根据META-INF/spring.factories文件中的依赖Name ,并将这些依赖引入到本项目IOC容器中。
spring.factories 文件位于:
总结:
1、编写项目时,一般会对自己写的代码 以及 第三方依赖进行一个配置。
但是springboot可以 对我们自动配置:
- a:自己写的代码,springboot通过 @SpringBootConfiguration注解 中的@EnableAutoConfiguration 注解中的**@AutoConfigurationPackage** 进行自动扫描配置,加入到IOC容器中。
- b:三方依赖 通过在 spring-boot-autoconfigure-2.2.1.RELEASE.jar 中的META-INF/spring.factories文件 进行声明。然后通过 @EnableAutoConfiguration注解开启使用。进行自动装配。
但是: 在spring.factories文件中 声明的依赖, 在项目启动时,并不是每个都被 开启 和 进行了自动配置。
想要开启该依赖,是要满足 一组条件的。
-
c: 如何自动装配的?
要满足自动配置类的 一组条件的。
每一个XXXAutoConfiguration.class 中 都有一组条件(如 上面的三个 @Conditional注解),当条件都满足时,SpringBoot才会 帮你自动配置该类到 SpringIOC容器中。 -
自动配置类中的 @EnableConfiguartionProperties (HttpEncodingProperties.class)此注解的作用是 :
把当前的配置类 与 properties配置文件类 关联。
且在 当前的配置类中 写上HttpEncodingProperties properties变量。 -
properties配置文件类(HttpEncodingProperties.class) 中的 @ConfigurationProperties(prex=“前缀”) ,的作用是:通过该前缀可以修改 properties配置文件类的字段值。
总结:
1、自动装配满足条件生效后,我们可以 手动修改。
如:自动配置类HttpEncodingAutoConfiguration【XxxAutoConfiguration】对应的Properties类 HttpEncodingProperties【XxxProperties】 中有一个prefix=“前缀”。可以在application.properties/yml文件中,对自动配置类的 默认属性进行修改。
// 自动配置类 与 对应的Properties共存的目的:为了解耦和。
【要满足的一组条件:】
@Conditional 扩展注解,满足何种条件的注解。
配置文件 以及 yml使用
配置文件
- 作用:springboot 进行了自动的配置(即:一些约定。如:端口约定为8080)。配置文件可以对 默认的配置进行 修改。
SpringBoot默认的全局配置文件(2个):
- 1、applicaation.properties
- 2、application.yml
yml使用注意:
- 1、key:空格value
- 2、通过垂直对齐,指定层次关系
- 3、String类型 默认可以不写引号。双引号会转义字符。
对象值 与 对象实体 进行绑定:
- 1、在application.yml中 配置对象属性值
- 2、在实体类中 进行关联