Spring Boot系列(6)——Configurer和Customizer
〇、什么是Configurer和Customizer
1.Configurer
xxxConfigurer接口是一个配置器。实现该接口,编写具体的方法,来扩展Spring Boot中的配置。
2.Customizer
xxxCustomizer接口是一个定制器。一般定制器只有一个方法,通过这个方法来修改Spring Boot的配置。
一、配置器之WebMvcConfigurer,扩展视图控制器
注意:添加@Configuration注解,标注该类为配置类。
当配置器中的配置生效后,Spring Boot项目会既保留了自动配置,同时也使用我们扩展的配置。
1 /* 2 * 实现WebMvcConfigurer接口 ——> WebMvc配置器 3 * 实现其中的addViewControllers( )方法 ——> 添加视图控制器 4 * */ 5 @Configuration 6 public class MvcConfig implements WebMvcConfigurer { 7 8 //View Controllers 9 @Override 10 public void addViewControllers(ViewControllerRegistry registry) { 11 //当访问“/、/index”时,就转到login视图 12 registry.addViewController("/").setViewName("login"); 13 registry.addViewController("/index").setViewName("login"); 14 } 15 }
二、定制器之WebServerFactoryCustomizer,修改服务器访问端口
1.WebServerFactoryCustomizer中只有一个方法(一般定制器都是只有一个方法)
实现该接口,通过该方法就可以修改服务器的一些配置参数
1 @FunctionalInterface 2 public interface WebServerFactoryCustomizer<T extends WebServerFactory> { 3 void customize(T factory); 4 }
2.我们通过向容器添加组件的方式修改服务器访问端口。
以下代码就类似于在全局配置文件在中编写 server.port=8081
1 //配置类 2 @Configuration 3 public class Beans { 4 5 //向容器添加组件 6 @Bean 7 public WebServerFactoryCustomizer<ConfigurableWebServerFactory> webServerFactoryCustomizer(){ 8 //这个factory就相当于Servlet容器 9 return new WebServerFactoryCustomizer<ConfigurableWebServerFactory>() { 10 @Override 11 public void customize(ConfigurableWebServerFactory factory) { 12 factory.setPort(8081); 13 } 14 }; 15 } 16 }