Java SpEL:将动态填充的映射注入构造函数

Java SpEL:将动态填充的映射注入构造函数,java,spring,dependency-injection,spring-el,Java,Spring,Dependency Injection,Spring El,我试图将动态构造的映射注入构造函数参数 我有两个类AuthHandler,MyAuthHandler。MyAuthHandler构造将传递给AuthHandler构造函数的映射。AuthHandler中存在重载构造函数,我想使用只接受Map(authorities)的构造函数创建其实例 我尝试了下面的代码,但在AuthHandler类中映射始终为空 env.xml <bean id="Handler" class="com.test.AuthHandler">

我试图将动态构造的映射注入构造函数参数

我有两个类
AuthHandler
MyAuthHandler
。MyAuthHandler构造将传递给AuthHandler构造函数的映射。AuthHandler中存在重载构造函数,我想使用只接受Map(authorities)的构造函数创建其实例

我尝试了下面的代码,但在AuthHandler类中映射始终为空

env.xml

    <bean id="Handler" class="com.test.AuthHandler">
        <constructor-arg name="authorities" type="java.util.Map" 
             value="#{ T(com.test.MyAuthHandler).getAccessControlMap() }" />
    </bean>

AuthHandler.java(来自依赖项)

公共类AuthHandler{
私人最终权力;
私人最终地图管理局;
公共授权处理程序(授权){
此(emptyMap(),权限);
}
公共AuthHandler(地图管理机构){
这(当局,新DenyAllAuthority());
}
AuthHandler(映射权限、权限默认权限){
this.defaultAuthority=defaultAuthority;
这个.权威=权威;
}
...
}
MyAuthHandler.java

public class MyAuthHandler {

    public static Map<String, Authority> getAccessControlMap() {
        // map will be created querying database
        String path = "api-path/*";
        Authority authority = new Authority("UserA");

        Map<String, Authority> map = new HashMap<>();
        map.put(path, authority);
        return map;
    }
}
公共类MyAuthHandler{
公共静态映射getAccessControlMap(){
//将通过查询数据库创建地图
字符串path=“api路径/*”;
权限=新权限(“用户A”);
Map Map=newhashmap();
地图放置(路径、权限);
返回图;
}
}

为什么不直接使用JavaConfig?感谢您的关注,AuthHandler来自一个依赖项,我无法将其更新为使用JavaConfig。我尝试了
@Value
Map
,效果很好。假设smth配置错误。您知道您可以为任何类(包括第三方类)声明
@Bean
方法吗?谢谢,我使用了
@Bean
,它工作正常,但无法用XML修复
public class MyAuthHandler {

    public static Map<String, Authority> getAccessControlMap() {
        // map will be created querying database
        String path = "api-path/*";
        Authority authority = new Authority("UserA");

        Map<String, Authority> map = new HashMap<>();
        map.put(path, authority);
        return map;
    }
}