Spring boot 2.x 中,servlet组件的注册

 

分类:springbootservlet
标签:listenerRegistrationBeanservletFilterRegistrationBeanfilterservlet组件

2020-03-17 07:42:20.0 阅读原文

在spring boot中,注册servlet组件,可以使用注解的方式,需要三个步骤:

  1. 编写开发要注册的组件(Filter、Servlet、Listener);
  2. 使用注解标记组件,也可以在注解的属性中进行配置并设置;
  3. 使用 @ServletComponentScan 启用扫描servlet组件。

但是注解中的配置一般不能从配置文件读取,只能设置常量值。所以,这种情况下就需要使用一种编程式的配置servlet组件方法。

编程式的配置servlet组件

首先,需要我们编写好相应的组件,例如:实现接口javax.servlet.Filter 、 继承父类HttpServlet 、实现对应的listener。

然后使用RegistrationBean进行注册: Filter、Servlet、Listener 分别使用以下的子类进行注册:

示例如下:

package com.jvm123.example.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.Ordered;

import javax.servlet.ServletRequest;

/**
 * @author yawn http://jvm123.com
 * 2020/3/17 15:28
 */
@Configuration
public class ServletComponentConfig {

    @Value("${app.key}")
    private String appkey;

    @Bean
    public FilterRegistrationBean registerFilter(ServletRequest servletRequest) {
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(new MyFilter());
        registration.setName("myFilter");
        registration.setOrder(Ordered.HIGHEST_PRECEDENCE + 1000);
        registration.addInitParameter("issso", "true");
        registration.addInitParameter("appkey", appkey);
        return registration;
    }

    @Bean
    public ServletRegistrationBean registerServlet() {
        ServletRegistrationBean registration = new ServletRegistrationBean();
        registration.setServlet(new Myservlet());
        registration.setName("myServlet");
        registration.addUrlMappings("/servlet1");
        registration.setLoadOnStartup(1);
        return registration;
    }

    @Bean
    public ServletListenerRegistrationBean registerListener() {
        ServletListenerRegistrationBean registration = new ServletListenerRegistrationBean();
        registration.setListener(new MySessionListener());
        registration.setOrder(1);
        return registration;
    }

}


分类:springbootservlet
标签:listenerRegistrationBeanservletFilterRegistrationBeanfilterservlet组件

原文链接: Spring boot 2.x 中,servlet组件的注册 2020-03-17 07:42:20.0
Spring boot 2.x 中,servlet组件的注册  spring-boot-2-x