自动配置💕
自动配置基本介绍
- 学习SSM 整合时,需要配置Tomcat 、配置SpringMVC、配置如何扫描包、配置字符过滤器、配置视图解析器、文件上传等[如图],非常麻烦。而在SpringBoot 中,存在自动配置机制(就是前面的约定优于配置),提高开发效率
2.简单回顾以前SSM 整合的配置.
SpringBoot 自动配置了哪些?
- 自动配置Tomcat
- 自动配置SpringMVC
- 自动配置Web 常用功能: 比如字符过滤器, 提示: 通过获取ioc 容器,查看容器创建的组件来验证,
修改quickstart\src\main\java\com\nlc\springboot\MainApp.java
@SpringBootApplication public class MainApp { public static void main(String[] args) { //启动springboot应用程序/项目 ConfigurableApplicationContext ioc = SpringApplication.run(MainApp.class, args); //如何查看容器中注入的组件 String[] beanDefinitionNames = ioc.getBeanDefinitionNames(); for (String beanDefinitionName : beanDefinitionNames) { System.out.println("beanDefinitionName--" + beanDefinitionName); } } }
-------更加直接查看的方式debug-------
自动配置: 默认扫描包结构!!! ,
官方文档:https://docs.spring.io/spring-boot/docs/current/reference/html/using.html#using.structuring-your-code.using-the-default-package
如何修改默认配置
如何修改默认扫描包结构
- 需求:要求能扫描com.nlc包下的HiController.java 应该如何处理?
- 创建: quickstart\src\main\java\com\nlc\HiController.java, 并测试,这时是访问不到的.
@Controller public class HiController { //返回hi,springboot @RequestMapping("/hi") @ResponseBody public String hi() { return "hi~, SpringBoot"; } }
- 修改MainApp.java, 增加扫描的包, 并完成测试.
// 直接在SpringBootApplication 注解后指定扫描包名 @SpringBootApplication(scanBasePackages = "com.nlc") //@SpringBootApplication(scanBasePackages = "com.nlc")指定扫描哪个包及其子包 public class MainApp { //..... }
resources\application.properties 配置大全
SpringBoot 项目最重要也是最核心的配置文件就是application.properties,所有的框架配置都可以在这个配置文件中说明
地址: application.properties配置大全
因为配置代码篇幅过长,影响本篇博文整体阅读,因此单独发表一篇文章方便大家观看,希望能够帮助到您😊SpringBoot 自动配置–常用配置
自动配置遵守按需加载原则💕
基本说明
- 自动配置遵守按需加载原则:也就是说,引入了哪个场景starter 就会加载该场景关联的jar 包,没有引入的starter 则不会加载其关联jar
- SpringBoot 所有的自动配置功能都在spring-boot-autoconfigure 包里面
- 在SpringBoot 的自动配置包, 一般是XxxAutoConfiguration.java, 对应XxxxProperties.java, 如图
实例演示
以MultipartProperties , MultipartAutoConfiguration 和application.properties 来说明,用debug的形式查看
😄总结
版本仲裁:如果程序员没有指定某个依赖jar 的版本,则以父项目指定的版本为准
修改pom.xml 配置时, 需要刷新Maven ,否则无法识别
SpringBoot 支持第三方starter。第三方starter命名 不从spring-boot 开始,因为官方starter命名以spring-boot 开头。
文章到这里就结束了,如果有什么疑问的地方请指出,诸大佬们一起来评论区一起讨论😁
希望能和诸大佬们一起努力,今后我们一起观看感谢您的阅读🍻
如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🤞