代码之家  ›  专栏  ›  技术社区  ›  Mohamed Taboubi

访问自动连线组件中泛型的类类型

  •  0
  • Mohamed Taboubi  · 技术社区  · 7 年前

    我的控制器里有一个自动连接的组件,

    以下是我的组件的代码:

    @Component
    public class Utils<T> {
    
        @Autowired
        ObjectMapper objectMapper;
    
        private Class<T> mappedClass;
    
        public Utils(Class<T> mappedClass) { this.mappedClass = mappedClass; }
    
    public T builder(String stringJson, T object) {
           /* doing staff ...*/
            return objectMapper.readValue(new TreeTraversingParser(jsonNode), mappedClass);
        }
    
    }
    

    我的autowired组件正在使用泛型,当我试图通过在构造函数中传递类类型来访问它时。但是我得到了这个错误:

    无法自动连线。找不到“类”类型的bean。检查 bean类中的自动连线问题。

    当我启动我的弹簧靴时,它会说:

    ca.util.utils中构造函数的参数0需要类型为的bean 找不到“java.lang.Class”。

    行动:

    考虑在 配置。

    我该怎么避免呢?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Gonen I    7 年前

    你没有展示你如何尝试安装utils,所以我们没有所有必要的信息。

    第一个问题是@component需要一个构造函数参数。 如果使用传递参数的applicationContext.getBean版本实例化组件,则可以解决此问题。

    或者,可以使用@qualifier注释提供构造函数参数(为构造函数参数指定一个名称,然后在其他地方提供)

    另一个问题是有一个原始泛型类型作为@component。我还没看到,所以我不确定是否有可能。for@component spring需要创建具体类的实例。