首页 > 解决方案 > 带有注释 @Scope(scopeName = WebApplicationContext.SCOPE_SESSION) 的两个对象实例

问题描述

我在 Spring @Scope(scopeName = WebApplicationContext.SCOPE_SESSION) 中需要一些帮助。我正在创建 Web 应用程序,但会话对象有问题。我创建了类:

@Component
@Scope(scopeName = WebApplicationContext.SCOPE_SESSION, proxyMode = ScopedProxyMode.TARGET_CLASS)
public class FilterParameter {

    private LinkedHashMap<String, String> filters;

    public FilterParameter() {
        filters = new LinkedHashMap<>();
    }

    public void addFilterParameter(String filterKey, String filterValue) {
        if (filters.containsKey("byKeyword")) {
            filters.remove("byKeyword");
        }
        filters.put(filterKey, filterValue);
    }

    public void addKeyWord(String filterValue) {
        if (!filters.isEmpty()) {
            filters.clear();
        }
        filters.put("byKeyword", filterValue);
    }

    public void removeFilterParameters(boolean allParam, String filterKey) {
        if (allParam) {
            filters.clear();
        } else {
            filters.remove(filterKey);
        }
    }

    public LinkedHashMap<String, String> getFiltersList() {
        return filters;
    }
}

我将它实现为一个控制器中的一个字段。

@Controller
public class AssessmentController {

 private FilterParameter filterA;

  public AssessmentController(FilterParameter filterA){

        this.filterA = filterA;
  }

//...
}

我需要在另一个控制器中使用它作为一个独立的过滤器:

@Controller
public class ProcessController {

 private FilterParameter filterB;

  public ProcessController(FilterParameter filterB){

        this.filterB = filterB;
  }

//...
}

Spring 为两个控制器创建单例 FilterParameter。如何设置它以创建 FilterParameter 的独立实例?

标签: javaspringspring-boot

解决方案


推荐阅读