我的控制器里有个部件是自动装配的,
下面是我的组件的代码:
@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);
}
}我的自动组件使用泛型,当我试图通过在构造函数中传递类类型来访问类类型时。但是,我得到了这个错误:
无法自动布线。没有找到“类”类型的bean。检查bean类中的自动生成问题。
当我启动我的弹簧靴时,它说:
ca.util.Utils中构造函数的参数0需要一个类型为'java.lang.Class‘的bean,而这个bean是找不到的。 操作: 考虑在您的配置中定义'java.lang.Class‘类型的bean。
我怎么才能避免呢?
发布于 2018-09-25 21:39:17
您没有显示您如何尝试安装Utils,所以我们没有所有必要的信息。
第一个问题是@组件需要构造函数参数。如果使用传递参数的ApplicationContext.getBean版本实例化组件,则可以解决此问题。
或者,您也可以使用@Qualifer注释提供构造函数参数(给构造器参数一个名称,然后在其他地方提供)
另一个问题是,您的@组件有一个原始的泛型类型。我还没看到,所以我不确定这有可能。对于@Component spring,需要创建具体类的实例。
https://stackoverflow.com/questions/52506776
复制相似问题