美文网首页springboot
Springboot打包war需要注意的问题

Springboot打包war需要注意的问题

作者: Guncorpse | 来源:发表于2019-04-28 11:45 被阅读0次

Sprinboot打包成jar包运行似乎没有什么问题,但是当需求让你不得不将Springboot项目打包成war扔到Tomcat中运行时,就需要注意以下问题:

1.Springboot内置的Tomcat中的Filter类与外部Tomcat中的Filter类写法不一致:
Springboot中内置Tomcat的Filter中init(), destroy()为默认方法继承后可以不重写这两个方法。
外部Tomcat中的Filter的init(), destroy()是抽象方法,你必须实现这两个方法,否则启动会报错。
解决:你的过滤器继承Filter类后要将init(), doFilter(), destroy()全部重写。

2. 通过@WebFilter声明的过滤器无法注入其他Spring组件(对象为null):
原因还未了解

解决:去掉@WebFilter和其他所有注解,通过配置类来手动创建Filter Bean

package com.guncorpse.skeleton.base.config;

import javax.servlet.Filter;

import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.filter.DelegatingFilterProxy;

import com.guncorpse.skeleton.base.filter.BaseSecurityFilter;

@Configuration
public class FilterConfig {
    
    @Bean
    public Filter baseSecurityFilter(){
        return new BaseSecurityFilter();
    }
    
    @Bean
    public FilterRegistrationBean<DelegatingFilterProxy> baseSecurityFilterRegistration() {
        FilterRegistrationBean<DelegatingFilterProxy> registration = new FilterRegistrationBean<DelegatingFilterProxy>();
        registration.setFilter(new DelegatingFilterProxy("baseSecurityFilter"));
        registration.addUrlPatterns("/*");
        registration.setName("baseSecurityFilter");
        registration.setOrder(1);
        return registration;
    }

}

相关文章

网友评论

    本文标题:Springboot打包war需要注意的问题

    本文链接:https://www.haomeiwen.com/subject/umcdnqtx.html