赞
踩
SpringBoot之所以可以做到简化配置文件直接启动,无外乎是其内部的两种设计策略:开箱即用和约定大于配置。
开箱即用:在开发过程中,通过maven项目的pom文件中添加相关依赖包,然后通过相应的注解来代替繁琐的XML配置以管理对象的生命周期。
约定大于配置:由SpringBoot本身来配置目标结构,由开发者在结构中添加信息的软件设计范式。这一特点虽降低了部分灵活性,增加了BUG定位的复杂性,但减少了开发人员需要做出决定的数量,同时减少了大量的XML配置,并且可以将代码编译、测试和打包等工作自动化。
它是一个组合注解,主要是由这么几个注解构成的。
- @SpringBootConfiguration//核心
- @EnableAutoConfiguration//核心
- @ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
- @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
核心注解是@SpringBootConfiguration和@EnableAutoConfiguration:
1、@SpringBootConfiguration
携带了一个@Configuration注解,代表自己是一个Spring的配置类。所以我们可以认为:@SpringBootConfiguration = @Configuration
2、@EnableAutoConfiguration
内部包含了两个注解,如下:
- @AutoConfigurationPackage //自动配置包
- @Import(AutoConfigurationImportSelector.class)//自动配置导入选择
它帮我们导入了AutoConfigurationImportSelector,这个类中存在一个方法可以帮我们获取所有的配置
- /*
- 所有的配置都存放在configurations中,
- 而这些配置都从getCandidateConfiguration中获取,
- 这个方法是用来获取候选的配置。
- */
- List<String> configurations = getCandidateConfigurations(annotationMetadata, attributes);
SpringBoot所有自动配置类都是在启动的时候进行扫描并加载,通过spring.factories可以找到自动配置类的路径,但是不是所有存在于spring,factories中的配置都进行加载,而是通过@ConditionalOnClass注解进行判断条件是否成立(只要导入相应的stater,条件就能成立),如果条件成立则加载配置类,否则不加载该配置类。
为帮助开发者们提升面试技能、有机会入职BATJ等大厂公司,特别制作了这个专辑——这一次整体放出。
大致内容包括了: Java 集合、JVM、多线程、并发编程、设计模式、Spring全家桶、Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、MongoDB、Redis、MySQL、RabbitMQ、Kafka、Linux、Netty、Tomcat等大厂面试题等、等技术栈!
需要获取以下这些面试题答案以及学习资料得话麻烦关注+好评之后
直接点击此链接→【点我直接获取】 即可免费获取哦~~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。