微服务架构——Spring Boot——知识点讲解


说明:本文主要讲解Spring Boot的一些常用的配置的作用及其原理

一、依赖管理

  • 依赖管理
    Spring Boot每次发布时都会提供一个它所支持的精选依赖列表。实际上,在构建配置里你不需要提供任何依赖的版本,因为Spring Boot已经替你管理好了。当更新Spring Boot时,那些依赖也会一起更新。
  • maven依赖默认配置
    Maven用户可以从spring-boot-starter-parent项目中继承以获得合理的默认值。父项目提供以下功能:
    Java 1.8作为默认的编译器级别。
    UTF-8源码编码。
    允许你省略常见依赖的version标签,相关的版本继承自Spring Boot提前设置好的版本。
  • 修改maven依赖默认配置
    可以通过dependencyManagement来管理依赖列表
  • Starters
    Starters是一个依赖描述符的集合,你可以将它包含进项目中,这样添加依赖就非常方便。你可以获取所有Spring及相关技术的一站式服务,而不需要翻阅示例代码,拷贝粘贴大量的依赖描述符。例如,如果你想使用Spring和JPA进行数据库访问,只需要在项目中包含spring-boot-starter-data-jpa依赖,然后你就可以开始了。

二、main类

  • main类放在目录顶层:
    main 类放在顶层,隐式地定义了一个基础的包扫描路径,从顶层向下扫描一些注解、配置等,若不放在顶层,还需额外配置scanBasePackages属性来扫描指定路径。
  • main类常用注解:
    @SpringBootApplication = @Configuration + @EnableAutoConfiguration + @ComponentScan。
    1、@Configuration:提到@Configuration就要提到他的搭档@Bean。使用这两个注解就可以创建一个简单的spring配置类,可以用来替代相应的xml配置文件。
    @Configuration的注解类标识这个类可以使用Spring IoC容器作为bean定义的来源。@Bean注解告诉Spring,一个带有@Bean的注解方法将返回一个对象,该对象应该被注册为在Spring应用程序上下文中的bean。
    2、@EnableAutoConfiguration:能够自动配置spring的上下文,试图猜测和配置你想要的bean类,通常会自动根据你的类路径和你的bean定义自动配置。
    3、@ComponentScan:会自动扫描指定包下的全部标有@Component的类,并注册成bean,当然包括@Component下的子注解@Service,@Repository,@Controller。

三、配置类

  • 主配置类:
    @EnableAutoConfiguration应该放到主配置类中,我们通常将main类作为主配置类,主配置类有且仅有一个,需要配合@Configuration一起使用
  • 自动配置:
    自动配置可以关闭,你可以使@EnableAutoConfiguration 注解的exclude属性禁用它们
    自定义配置会覆盖掉自动配置

四、Spring Beans和依赖注入

  • 支持spring注解:
    你可以自由地使用任何标准的Spring框架技术去定义beans和它们注入的依赖。简单起见,我们经常使用@ComponentScan注解搜索beans,并结合@Autowired构造器注入。
    如果遵循以上的建议组织代码结构(将应用的main类放到包的最上层,即root package),那么你就可以添加@ComponentScan注解而不需要任何参数,所有应用组件(@Component, @Service, @Repository, @Controller等)都会自动注册成Spring Beans。

五、Devtools 开发工具

  • 自动重启:只要classpath下的文件有变动,它就会自动重启
  • 排除资源:
    某些资源的变化没必要触发重启,比如Thymeleaf模板可以随时编辑。默认情况下,位于/META-INF/maven,/META-INF/resources,/resources,/static,/public或/templates下的资源变更不会触发重启,但会触发实时加载(live reload)你可以使用spring.devtools.restart.exclude属性自定义这些排除规则

六、日志系统

  • SpringBoot底层日志系统:
    底层是使用slf4j(抽象)+logback(实现)的方式进行日志记录的

  • 自定义日志配置:
    使用logback-spring.xml而不是logback.xml,你不能在标准的logback.xml配置文件中使用扩展,因为它加载的太早了,Spring可能不能够完全控制日志初始化。

  • SpringBoot默认适配所有日志系统,如果引入的其他框架携带日志,需要使用exclusion排除掉。

七、Spring Web MVC框架

  • Spring MVC自动配置
    Spring Boot为Spring MVC提供的auto-configuration适用于大多数应用,并在Spring默认功能上添加了以下特性:
    1、视图解析:引入ContentNegotiatingViewResolver和BeanNameViewResolver beans。
    2、对静态资源的支持,包括对WebJars的支持。
    3、类型转换器:自动注册Converter,GenericConverter,Formatter beans。
    4、对HttpMessageConverters的支持。
    自动注册MessageCodeResolver。
    对静态index.html的支持。
    对自定义Favicon的支持。
    自动使用ConfigurableWebBindingInitializer bean。
  • 使用Spring MVC默认配置
    如果保留Spring Boot MVC特性,你只需添加其他的MVC配置(拦截器,格式化处理器,视图控制器等)。你可以添加自己的WebMvcConfigurerAdapter类型的@Configuration类,而不需要注解@EnableWebMvc。如果希望使用自定义的RequestMappingHandlerMapping,RequestMappingHandlerAdapter,或ExceptionHandlerExceptionResolver,你可以声明一个WebMvcRegistrationsAdapter实例提供这些组件。
  • 不使用Spring MVC自动配置
    如果想全面控制Spring MVC,你可以添加自己的@Configuration,并使用@EnableWebMvc注解,这时Spring MVC所有的自动配置都将失效。
    更多内容详见官网:
    中文:https://www.breakyizhan.com/springboot/3398.html
    英文:https://docs.spring.io/spring-boot/docs/2.3.1.RELEASE/reference/html/howto.html#howto-spring-boot-application

持续更新……

猜你喜欢

转载自blog.csdn.net/peanutwzk/article/details/107041176