SpringBoot(一)

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、在实体类中 进行关联
    在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值