首页 > 解决方案 > Spring:如何覆盖 @Import 注释中使用的类

问题描述

我必须从类 Server 中重写函数 getMyObject:

@EnableResourceServer
public class Server extends ResourceServerConfigurerAdapter{   //class from library
    
    @Override
    public void configure(HttpSecurity http){
        ....
        addFilterBefore(getMyObject(),anotherArgument);
        ...
    }
    
    protected Filter getMyObject(){
        return new CustomFilter();
    }
}


@Import({ Server.class })  
public class Config{  //class from library

    public void someMethod(){}
}


public class ConfigExt extends Config{   // my class

    @Override
    public void someMethod(){ // my implementation}

}

我试图扩展 Server 类并覆盖 getMyObject 方法。接下来我将@Import ServerExt 添加到 ConfigExt 类:

@EnableResourceServer
public class ServerExt extends Server{   // my class
        
    @Override
    protected Filter getMyObject(){
        return new CustomFilterExt();  
    }
}

@Import({ ServerExt.class }) 
public class ConfigExt extends Config{   // my class

    @Override
    public void someMethod(){ // my implementation}

}

但这会导致创建了 2 个实例:Server 和 ServerExt。因此同时启动了 CustomFilter 和 CustomFilterExt。

所以上述解决方案不起作用。我该如何处理?

标签: javaspringfilterimport

解决方案


推荐阅读