springboot(基础)

springboot优点

- 创建独立的spring应用
 - 内置web服务器
 - 自动starter依赖,简化构建配置
 - 自动配置spring以及第三方功能
 - 提供生产级别的监控、健康检查及外部化配置
 - 无代码生成、无需编写xml

spring boot包管理

- parent
 之所以有些引入不需要写版本号是因为在parent中已经申明了它默认的版本号,如果需要修改这个版本则直接在我们自己的pom文件中配置即可。

 <parent>
    <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>2.4.13</version>
  </parent>

点击spring-boot-starter-parent进入父pom

 <parent>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-dependencies</artifactId>
   <version>2.4.13</version>
 </parent>

继续点击spring-boot-dependencies
在这里插入图片描述
这里定义了很多依赖的版本,所以我们在子依赖中可以不用书写版本号,它读取的是这里的版本号。
如果我们需要使用自己的版本:

 <properties>
    <mysql.version>5.1.43</mysql.version>
  </properties>

总结一下就是:parent中查看这个包对应的配置名称,在自己的pom文件中重写定义就会覆盖它自己的那个版本,如果底层没有配置的依赖需要在自己的pom中配置。

  • starter(场景启动器)
    在这里插入图片描述
    它会将这个场景下需要的常规依赖自动导入,也可以定义自己的starter。官方不建议以spring-boot开头,建议命名方式*-spring-boot。

自动配置

基于starter去配置,里面又会包含各种starter

 <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
 </dependency>
  • 自动配置好Tomcat
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <version>2.3.7.RELEASE</version>
    <scope>compile</scope>
  </dependency>
  • 自动配置springMVC常用功能(如字符集、拦截器、视图解析器等)
ConfigurableApplicationContext run = SpringApplication.run(SpringbootdemoApplication.class, args);
        String names[] = run.getBeanDefinitionNames();
        for (String name : names) {
            System.out.println(name);
        }

我们可以将IOC容器中的所有组件进行打印,发现springboot默认加载了我常用的mvc组件。
在这里插入图片描述

  • 默认的包结构
    主程序所在的包和它的子包都可以被扫描到
    如果位于主程序包的外面则扫描不到改包,例如下面的例子
    在这里插入图片描述
    访问结果:
    在这里插入图片描述
    这个controller是不会注册的,因为springboot没有发现它的存在,如果想要注册需要自定义包扫描。
    解决方法:
    解决的时候一定要主要要是改变了扫描路径很可能引起其它的bean在装配的时候找不到。
  • 法一
    在这里插入图片描述
  • 法二
    由于@SpringBootApplication包含了ComponentScan注解我们也可以这样写:
    在这里插入图片描述
  • 各种配置永远默认值
    1)默认配置都是映射到某一个类上的
    2)配置文件的值最终会绑定到某个类
  • 按需加载所有的自动配置
    1)非常多的starter
    2)引入了哪些场景的自动配置才会开启
    3)springboot所有的配置功能都在springboot
    spring-boot-starter-web ->spring-boot-starter会找到自动配置的这个依赖
 <dependency>
  <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-autoconfigure</artifactId>
    <version>2.3.7.RELEASE</version>
    <scope>compile</scope>
 </dependency>

自动配置原理:
自动配置原理

常用注解

  • @Configuration
    配置类,它本身也是一个组件,我们可以再这个类用@bean的方式注册组件,这些组件默认是单例的。
    @Configuration(proxyBeanMethods = true)
    如果配置为TRUE则会检查容器中是否存在,有则不创建,保证单例。
    @Configuration(proxyBeanMethods = false)
    如果配置为FALSE则每次调用注册组件的函数都会产生一个新的对象。
    最佳实战:
    配置类组件之间无依赖关系用Lite模式加速容器启动过程,减少判断(就是配置为FALSE)
    配置类组件之间有依赖关系,方法会被调用得到之前单实例组件,用Full模式(就是配置为TRUE)
  • @@Import({User.class, Person.class})
    给容器中自动创建导入类的对象(即创建某个组件)
  • @Conditional(),下面有多个子注解
    存在某个组件、缺少某个类等判断条件进行装配
    条件装配:
    在这里插入图片描述
    -@ImportResource(“classpath:beans.xml”)
    在某个配置类上导入以xml配置的组件
    ex:

配置绑定

@Component 需要先注册这个组件,才能够使用spring提供的配置绑定
@ConfigurationProperties(prefix = “user”)
在application.properties中写配置的值

user.name=zs
user.sex=nan

在这里插入图片描述
@Configuration
@EnableConfigurationProperties(User.class)
这个时候User类上还是要写@ConfigurationProperties(prefix = “user”)
特别重要
只是在配置类上可以将User这个组件注册到容器中,这样的好处是在引用第三方包的时候(我们需要将某一个类注册到容器中并绑配置,原始的类无法加Component注解,我们可以采用这种方式来讲第三方组件注册到容器总)

查看自动配置报告

debug=true negative(不生效) positive(生效)

如何修改配置文件

  • 方式一
    参考:https://docs.spring.io/spring-boot/docs/2.3.7.RELEASE/reference/html/appendix-application-properties.html#common-application-properties
    各个配置的含义都在这里能够找到。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值