“Spring Boot 自动配置特性”的版本间的差异

来自姬鸿昌的知识库
跳到导航 跳到搜索
第63行: 第63行:
 
   </servlet-mapping>
 
   </servlet-mapping>
 
</syntaxhighlight>为什么在 Spring Boot 出现之后,不进行如上的配置也可以进行使用;如果这些配置已经在 Spring Boot 内部实现了,是怎么实现的?
 
</syntaxhighlight>为什么在 Spring Boot 出现之后,不进行如上的配置也可以进行使用;如果这些配置已经在 Spring Boot 内部实现了,是怎么实现的?
 +
 +
==== 打印容器中所有的 bean ====
 +
<syntaxhighlight lang="java">
 +
package io.github.jihch.boot;
 +
 +
import org.springframework.boot.SpringApplication;
 +
import org.springframework.boot.autoconfigure.SpringBootApplication;
 +
import org.springframework.context.ConfigurableApplicationContext;
 +
 +
 +
/**
 +
* 主程序类
 +
* @SpringBootApplication:这是一个 Spring Boot 应用
 +
*/
 +
@SpringBootApplication
 +
public class MainApplication {
 +
 +
    public static void main(String[] args) {
 +
        //1、返回 IOC 容器
 +
        ConfigurableApplicationContext context = SpringApplication.run(MainApplication.class, args);
 +
 +
        //2、查看容器里面的组件
 +
        String[] beanDefinitionNames = context.getBeanDefinitionNames();
 +
        for (String name : beanDefinitionNames) {
 +
            System.out.println(name);
 +
        }
 +
    }
 +
 +
}
 +
</syntaxhighlight><syntaxhighlight lang="console">
 +
requestMappingHandlerAdapter
 +
requestMappingHandlerMapping
 +
welcomePageHandlerMapping
 +
mvcConversionService
 +
mvcValidator
 +
mvcContentNegotiationManager
 +
mvcPathMatcher
 +
mvcUrlPathHelper
 +
viewControllerHandlerMapping
 +
beanNameHandlerMapping
 +
routerFunctionMapping
 +
resourceHandlerMapping
 +
mvcResourceUrlProvider
 +
defaultServletHandlerMapping
 +
handlerFunctionAdapter
 +
mvcUriComponentsContributor
 +
httpRequestHandlerAdapter
 +
simpleControllerHandlerAdapter
 +
handlerExceptionResolver
 +
mvcViewResolver
 +
mvcHandlerMappingIntrospector
 +
org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter
 +
defaultViewResolver
 +
viewResolver
 +
requestContextFilter
 +
org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration
 +
formContentFilter
 +
org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$ClassProxyingConfiguration
 +
org.springframework.boot.autoconfigure.aop.AopAutoConfiguration
 +
org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration
 +
applicationAvailability
 +
org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration
 +
org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration
 +
lifecycleProcessor
 +
spring.lifecycle-org.springframework.boot.autoconfigure.context.LifecycleProperties
 +
org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$Jackson2ObjectMapperBuilderCustomizerConfiguration
 +
standardJacksonObjectMapperBuilderCustomizer
 +
spring.jackson-org.springframework.boot.autoconfigure.jackson.JacksonProperties
 +
org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration
 +
jacksonObjectMapperBuilder
 +
org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$ParameterNamesModuleConfiguration
 +
parameterNamesModule
 +
org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperConfiguration
 +
jacksonObjectMapper
 +
org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration
 +
jsonComponentModule
 +
org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration
 +
stringHttpMessageConverter
 +
org.springframework.boot.autoconfigure.http.JacksonHttpMessageConvertersConfiguration$MappingJackson2HttpMessageConverterConfiguration
 +
mappingJackson2HttpMessageConverter
 +
org.springframework.boot.autoconfigure.http.JacksonHttpMessageConvertersConfiguration
 +
org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration
 +
messageConverters
 +
org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration
 +
spring.info-org.springframework.boot.autoconfigure.info.ProjectInfoProperties
 +
org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration
 +
taskSchedulerBuilder
 +
spring.task.scheduling-org.springframework.boot.autoconfigure.task.TaskSchedulingProperties
 +
org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration
 +
restTemplateBuilder
 +
org.springframework.boot.autoconfigure.web.embedded.EmbeddedWebServerFactoryCustomizerAutoConfiguration$TomcatWebServerFactoryCustomizerConfiguration
 +
tomcatWebServerFactoryCustomizer
 +
org.springframework.boot.autoconfigure.web.embedded.EmbeddedWebServerFactoryCustomizerAutoConfiguration
 +
org.springframework.boot.autoconfigure.web.servlet.HttpEncodingAutoConfiguration
 +
characterEncodingFilter
 +
localeCharsetMappingsCustomizer
 +
org.springframework.boot.autoconfigure.web.servlet.MultipartAutoConfiguration
 +
multipartConfigElement
 +
multipartResolver
 +
spring.servlet.multipart-org.springframework.boot.autoconfigure.web.servlet.MultipartProperties
 +
org.springframework.aop.config.internalAutoProxyCreator
 +
 +
</syntaxhighlight>

2023年2月2日 (四) 08:46的版本

https://www.bilibili.com/video/BV19K4y1L7MT/?p=7

怎么自动配好 Tomcat的?

怎么引入 tomcat 依赖的?

boot-01-helloworld - pom.xml

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

    </dependencies>


spring-boot-starter-web-x.x.x.RELEASE.pom

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-tomcat</artifactId>
      <version>2.3.4.RELEASE</version>
      <scope>compile</scope>
    </dependency>


自动配置好 Spring MVC

spring-boot-starter-web-x.x.x.RELEASE.pom

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>5.2.9.RELEASE</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.2.9.RELEASE</version>
      <scope>compile</scope>
    </dependency>


思考:在 Spring Boot 出现之前,使用 Spring MVC 要有哪些配置?

web.xml

<!--配置DispatcherServlet -->
  <servlet>
    <servlet-name>spring-dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!-- 配置SpringMVC需要加载的配置文件 spring-mvc.xml -->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>spring-dispatcher</servlet-name>
    <!--默认匹配所有的请求 -->
    <url-pattern>/</url-pattern>
  </servlet-mapping>

为什么在 Spring Boot 出现之后,不进行如上的配置也可以进行使用;如果这些配置已经在 Spring Boot 内部实现了,是怎么实现的?

打印容器中所有的 bean

package io.github.jihch.boot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;


/**
 * 主程序类
 * @SpringBootApplication:这是一个 Spring Boot 应用
 */
@SpringBootApplication
public class MainApplication {

    public static void main(String[] args) {
        //1、返回 IOC 容器
        ConfigurableApplicationContext context = SpringApplication.run(MainApplication.class, args);

        //2、查看容器里面的组件
        String[] beanDefinitionNames = context.getBeanDefinitionNames();
        for (String name : beanDefinitionNames) {
            System.out.println(name);
        }
    }

}
requestMappingHandlerAdapter
requestMappingHandlerMapping
welcomePageHandlerMapping
mvcConversionService
mvcValidator
mvcContentNegotiationManager
mvcPathMatcher
mvcUrlPathHelper
viewControllerHandlerMapping
beanNameHandlerMapping
routerFunctionMapping
resourceHandlerMapping
mvcResourceUrlProvider
defaultServletHandlerMapping
handlerFunctionAdapter
mvcUriComponentsContributor
httpRequestHandlerAdapter
simpleControllerHandlerAdapter
handlerExceptionResolver
mvcViewResolver
mvcHandlerMappingIntrospector
org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter
defaultViewResolver
viewResolver
requestContextFilter
org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration
formContentFilter
org.springframework.boot.autoconfigure.aop.AopAutoConfiguration$ClassProxyingConfiguration
org.springframework.boot.autoconfigure.aop.AopAutoConfiguration
org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration
applicationAvailability
org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration
org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration
lifecycleProcessor
spring.lifecycle-org.springframework.boot.autoconfigure.context.LifecycleProperties
org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$Jackson2ObjectMapperBuilderCustomizerConfiguration
standardJacksonObjectMapperBuilderCustomizer
spring.jackson-org.springframework.boot.autoconfigure.jackson.JacksonProperties
org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperBuilderConfiguration
jacksonObjectMapperBuilder
org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$ParameterNamesModuleConfiguration
parameterNamesModule
org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperConfiguration
jacksonObjectMapper
org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration
jsonComponentModule
org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration$StringHttpMessageConverterConfiguration
stringHttpMessageConverter
org.springframework.boot.autoconfigure.http.JacksonHttpMessageConvertersConfiguration$MappingJackson2HttpMessageConverterConfiguration
mappingJackson2HttpMessageConverter
org.springframework.boot.autoconfigure.http.JacksonHttpMessageConvertersConfiguration
org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration
messageConverters
org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration
spring.info-org.springframework.boot.autoconfigure.info.ProjectInfoProperties
org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration
taskSchedulerBuilder
spring.task.scheduling-org.springframework.boot.autoconfigure.task.TaskSchedulingProperties
org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration
restTemplateBuilder
org.springframework.boot.autoconfigure.web.embedded.EmbeddedWebServerFactoryCustomizerAutoConfiguration$TomcatWebServerFactoryCustomizerConfiguration
tomcatWebServerFactoryCustomizer
org.springframework.boot.autoconfigure.web.embedded.EmbeddedWebServerFactoryCustomizerAutoConfiguration
org.springframework.boot.autoconfigure.web.servlet.HttpEncodingAutoConfiguration
characterEncodingFilter
localeCharsetMappingsCustomizer
org.springframework.boot.autoconfigure.web.servlet.MultipartAutoConfiguration
multipartConfigElement
multipartResolver
spring.servlet.multipart-org.springframework.boot.autoconfigure.web.servlet.MultipartProperties
org.springframework.aop.config.internalAutoProxyCreator