栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

springboot(基础)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

springboot(基础)

### springboot优点
 - 创建独立的spring应用
 - 内置web服务器
 - 自动starter依赖,简化构建配置
 - 自动配置spring以及第三方功能
 - 提供生产级别的监控、健康检查及外部化配置
 - 无代码生成、无需编写xml
 ### spring boot包管理
 - parent
 之所以有些引入不需要写版本号是因为在parent中已经申明了它默认的版本号,如果需要修改这个版本则直接在我们自己的pom文件中配置即可。

 
    org.springframework.boot
      spring-boot-starter-parent
      2.4.13
  

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

 
   org.springframework.boot
   spring-boot-dependencies
   2.4.13
 

继续点击spring-boot-dependencies

这里定义了很多依赖的版本,所以我们在子依赖中可以不用书写版本号,它读取的是这里的版本号。
如果我们需要使用自己的版本:

 
    5.1.43
  

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

starter(场景启动器)

它会将这个场景下需要的常规依赖自动导入,也可以定义自己的starter。官方不建议以spring-boot开头,建议命名方式*-spring-boot。 自动配置

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

 
   org.springframework.boot
   spring-boot-starter-web
 

自动配置好Tomcat


    org.springframework.boot
    spring-boot-starter-tomcat
    2.3.7.RELEASE
    compile
  

自动配置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会找到自动配置的这个依赖

 
  org.springframework.boot
    spring-boot-autoconfigure
    2.3.7.RELEASE
    compile
 

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

常用注解

@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配置的组件
配置绑定

@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
各个配置的含义都在这里能够找到。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/749676.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号