SpringBoot中替代web.xml解决办法

SpringBoot中省掉了web.xml这样简化了项目同时也减少了项目搭建时的复杂性。网上有springboot加载web.xml的方法。但是个人感觉既然是被去掉的东西,再加上未免太复杂了。

SpringBoot中有相关的实现方法去实现web.xml中的配置功能。

以下介绍如何在springboot中添加自定义的配置

JavaEE中web.xml配置:

<filter>

<filter-name>OauthFilter</filter-name>

<filter-class>com.sense.sso.oauth.WebFilter</filter-class>

<init-param>

<param-name>serverAddress</param-name>

<param-value>http://localhost:8080/IAM</param-value>

</init-param>

<init-param>

<param-name>clientId</param-name>

<param-value>APP001</param-value>

</init-param>

<init-param>

<param-name>clientSecret</param-name>

<param-value>wpprkkmsi093jns2sdf4452sdf</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>OauthFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

SpringBoot实现方法

说明:上面web.xml中引用的WebFilter类就是项目启动的时候需要加载的类,也就是你自定义需要实现的方法要写在这里面

WebFilter.java

public class WebFilter implements Filter {

@Override

public void init(FilterConfig filterConfig) throws ServletException {

}

@Override

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)

throws IOException, ServletException {

System.out.println("自定义实现类的方法");

}

@Override

public void destroy() {

}

}

回顾@Configuration的使用方式。添加@Configuration注解的类中会存在0个或者多个@Bean。被@Bean注解过的方法会在项目启动的时候跟随调用

@Configuration//用来定义 DispatcherServlet 应用上下文中的 bean、

@EnableWebMvc

@ComponentScan

public class WebConfig extends WebMvcConfigurerAdapter {

@Bean

public FilterRegistrationBean SenseSsoOauthWebFilterFilterRegistration() {

FilterRegistrationBean registration = new FilterRegistrationBean();

registration.setFilter(new WebFilter());//创建上面的自定义的WebFilter对象

registration.addUrlPatterns("/*");

registration.addInitParameter("serverAddress", "http://localhost:8080/IAM");//相当于web.xml中的<param-name>、<param-value>。可以添加n个

registration.addInitParameter("clientId", "APP001");

registration.addInitParameter("clientSecret", "wpprkkmsi093jns2sdf4452sdf");

registration.setName("WebFilter");//该Filter的名字,自己随便定义

registration.setOrder(1);//启动时候的优先级

return registration;

}

@Override

public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {

configurer.enable();

}

@Override

public void addResourceHandlers(ResourceHandlerRegistry registry) {

super.addResourceHandlers(registry);

}

}

当使用嵌入式的Servlet容器(Tomcate、Jetty等)时我们通过将Servlet、Filter和Listener声明为SpringBean而达到注册效果;或者注册FilterRegistrationBean、ServletListenerRegistrationBean、ServletRegistrationBean的Bean。

以上是实现的web.xml中Filter标签的对应功能,可以通过FilterRegistrationBean类去实现,详细的方法可以参考spring的官方API

发布了42 篇原创文章 · 获赞 32 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/m0_37027631/article/details/89362057