zoukankan      html  css  js  c++  java
  • SpringBoot 2.0 编程方式配置,不使用默认配置方式

    SpringBoot的一般配置是直接使用application.properties或者application.yml,因为SpringBoot会读取.perperties和yml文件来覆盖默认配置;

    从源码分析SpringBoot默认配置是怎样的

    ResourceProperties 这个class说明了springboot默认读取的properties

        private static final String[] CLASSPATH_RESOURCE_LOCATIONS = {
        			"classpath:/META-INF/resources/", "classpath:/resources/",
        			"classpath:/static/", "classpath:/public/" };
    

    WebMvcAutoConfiguration 这个class就是springboot默认的mvc配置类,里面有一个static class实现了WebMvcConfigurer接口,;具体这个接口有什么用,具体可以看spring官网[springMVC配置][1]

        @Configuration
    	@Import(EnableWebMvcConfiguration.class)
    	@EnableConfigurationProperties({ WebMvcProperties.class, ResourceProperties.class })
    	@Order(0)
        public static class WebMvcAutoConfigurationAdapter
        			implements WebMvcConfigurer, ResourceLoaderAware 
    

    可以看到里面的默认viewResolver配置,只要我们复写了ViewResolver这个bean,就相当于不适用SpringBoot的默认配置;

    		@Bean
    		@ConditionalOnMissingBean
    		public InternalResourceViewResolver defaultViewResolver() {
    			InternalResourceViewResolver resolver = new InternalResourceViewResolver();
    			resolver.setPrefix(this.mvcProperties.getView().getPrefix());
    			resolver.setSuffix(this.mvcProperties.getView().getSuffix());
    			return resolver;
    		}
    

    这里里面有一个很常见的mapping,在springboot启动日志中就可以看到。

    			@Bean
    			public SimpleUrlHandlerMapping faviconHandlerMapping() {
    				SimpleUrlHandlerMapping mapping = new SimpleUrlHandlerMapping();
    				mapping.setOrder(Ordered.HIGHEST_PRECEDENCE + 1);
    				mapping.setUrlMap(Collections.singletonMap("**/favicon.ico",
    						faviconRequestHandler()));
    				return mapping;
    			}
    ```
    
    实验证明,通过实现了`WebMvcConfigurer`接口的bean具有优先级 (或者继承`WebMvcConfigurationSupport`),会覆盖在.properties中的配置。比如`ViewResolver`
    
    ### 编程方式配置SpringBoot例子
    
    2种方式,1是实现`WebMvcConfigurer `接口,2是继承`WebMvcConfigurationSupport`;(其实还有第三种,就是继承`WebMvcConfigurerAdapter`,但是这种方式在Spring 5中被舍弃)
    
    
    
      [1]: https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html
  • 相关阅读:
    驱动-问题解决
    Broadcast-广播的接收
    menu-代码添加以及add方法参数意义
    ubuntu-12.04工作区内容变换所属工作区
    $.ajax(),传参要用data
    阻止浏览器默认的事件冒泡行为
    form提交跳转问题
    根据已知值,选中selec中的选项
    option click事件
    按回车键确定
  • 原文地址:https://www.cnblogs.com/chenjingquan/p/9194545.html
Copyright © 2011-2022 走看看