springboot汇总一

1.依赖管理

1.1父工程spring-boot-starter-parent
该父项目还有一个spring-boot-dependences父工程,这个spring-boot-dependences里面包含了一个Properties,其中什么了常用依赖包和依赖包的版本。我们在pom.xml文件中如果需要使用相关的jar包,可以不带版本号(只有在这个propperties中声明了版本号的jar包,才可以不带版本号),那么就可以使用其中默认的版本号。如果带版本号,那么就会重新下载相关版本号的jar包。

1.2关于starter的场景启动器
只要引入spring-boot-starter-*的依赖,那么关于这个场景的相关的包都会被引入。
每一个spring-boot-starter-*都包含一个最基本的spring-boot-starter的启动器。这各启动器里面又包含了一个spring-boot-autoConfigure的依赖,这个依赖写好了所有starter场景中的默认配置。当导入某个starter场景时,这个场景的默认配置就会生效。因此,对于每个starter场景中都会又相同的操作,而这些操作都在基础的spring-boot-starter中已经写好了,这也是每个场景starter中需要引入spring-boot-starter启动器的原因。

2.自动配置(初步理解,重点)
导入starter后会引入springmvc等的相关组件,并且对这些组件做了一些默认配置(比如文件上传,视图解析器等这些相关的springmvc的配置)

2.1主程序中springbootApplication的作用(里面包含了几个注解的集合):
自动扫描该文件的上一个文件夹下面的所有程序,因此在这个文件夹下的bean等,都不要进行手动扫描(这是因为在springbootApplication注解中,有componentScan的默认配置)。
如果想要改变包扫描的根文件夹,可以在springbootApplication中填写scanBasePackage属性。
另外,其中对相关组件进行了许多默认配置,对于其中一个组件配置都是绑定了某一个java类,而配置文件(application.properties)的值都会绑定到这些类上(如果提供配置文件的值,那么就会覆盖默认值),然后这个默认配置类会在ioc容器中被创建。

2.2主程序SpringApplication.run(DemoApplication.class, args);
这个操作可以返回一个ioc容器。

ConfigurableApplicationContext run = SpringApplication.run(DemoApplication.class, args);

ioc容器可以查看容器内所有的组件信息。

3.容器功能
3.1configuration是编写配置类的注解,注解中包含一个proxyBeanMethods属性,true表示full模式,每次使用组件时,都会检查容器中是否存在,速度更慢。false表示lite模式,每次使用组件时,都会新建一个组件,即非单例模式的组件。

3.2Import注解
注解中有一个数组,表示可以传入多个组件到ioc中,而创建组件默认为无参构造进行创建。

3.3bean注解
如果在函数上标注,那么就把函数名,作为组件id,返回值作为返回类型加入到ioc中。

3.4Conditional注解。
满足conditional条件的时候,才会生效。
标注在方法上时,当满足条件时,下面的方法,以及方法上的注解才会生效。标注在类上同样类似。

3.5ImportResource注解
给容器中导入配置文件,比如导入spring beans.xml的文件,使得原生的xml文件也可以在springboot中生效

3.6ConfigurationProperties注解
通过设置这个注解的属性,可以找到配置文件中,相同key值的属性,并把value值,赋给对应的类中的key。(只有先加入到容器中,才可以使用这种配置绑定的功能,因此要添加@Component注解)

3.6EnableConfigurationProperties注解。
在配置类中注解,属性写明对应的类。既可把该类的ConfigurationProperties配置生效。,进行配置绑定后,加入到容器中。与ConfigurationProperties不同的是,不需要将ConfigurationProperties这个类可以不使用@Component组件

4.自动配置入门
先从SpringBootApplication注解讲起,其中包含了三个重要的注解。SpringConfiguration、EnableAutoConfiguration、ComponentScan。

4.1SpringConfiguration注解
SpringConfiguration中包含了一个Configuration注解,说明,这个是一个SpringBoot的核心配置类。

4.2EnableAutoConfiguration注解(核心)
包含两个核心注解AutoConfigurationPackage、Import(AutoConfigurationImportSelector.class)

AutoConfigurationPackage:
批量导入组件,其属性为register,这是一个类,这个类中方法的操作,就是将SpringBootApplication默认扫描的包路径作为参数传进去。然后这个类就是实现包扫描的功能。

Import(AutoConfigurationImportSelector.class):
给容器中批量导入组件。
1.传入注解元数据,获取所有导入的候选组件名。
2,.组件名得到后,然后使用工厂传入组件名得到所有的组件。
3.再加载所有的META-INF/spring.factories文件(所有含有这个配置文件的包都要加载)(最核心的是spring-boot-autoConfigure)

spring-boot-autoconfigure这个包里面的sping.properties文件中,包含了所有的场景的的自动化配置。

在springboot启动的时候,这个时候会加载所有自动配置类。
但是配置类中,有条件装配注解。只有当我们导包的时候,导入了相关的包,相关的类才会存在于类路径下,这时候条件装配生效,因此自动配置就可以生效。这样就可以在我们导入相关依赖的时候,就可以启动这些依赖的自动配置。

ConditionalOnMissingBean注解。当用户没有配置某个类时,则用默认配置的组件(这些类通常都是通过EnableConfigurationProperties绑定配置文件的值,进行默认配置的),如果用户配置了,那么默认的配置就会失效。这个注解是完成这类功能的关键。即所有的带有这种注解的配置,用户均可以手动进行配置。

定制化配置:
1.通过手动编写底层的配置类。让用户自己的配置类生效,而默认配置不生效即可。
2.通过修改配置文件即可。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值