我有一个spring boot应用程序,我在jolt规范中使用了自定义jolt转换器,如下所示。
{
"operation": "com.transformers.CustomJoltTransformer"
},
CustomJoltTransformer.java是一个Spring Bean。有没有办法将这个spring bean直接传递给jolt,而不是Jolt为我创建bean?我将它定义为`@component,因为我需要根据不同的配置文件从application.yml加载user的值。
@Component
public class CustomJoltTransformer implements Transform {
@Value("${app.user}")
private String user;
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
@Override
public Object transform(Object input) {
Map inputMap = (Map) input;
...
inputMap.put("user", getUser());
return inputMap;
}
}
发布于 2020-06-26 02:01:24
fromSpec
是一种重载方法,如果你不想使用默认方法,你也可以选择传递chainrInstantiator。
Chainr.fromSpec(JsonUtils.classpathToList(path), chainrInstantiator)
下面是我的Custom Instantiator代码
@Component
public class CustomChainrInstantiator extends DefaultChainrInstantiator implements ChainrInstantiator {
@Autowired
private CustomJoltTransformer customJoltTransformer;
@Override
public JoltTransform hydrateTransform(ChainrEntry entry) {
if ("CustomJoltTransformer".equalsIgnoreCase(entry.getJoltTransformClass().getSimpleName())) {
return customJoltTransformer;
}
return super.hydrateTransform(entry);
}
}
https://stackoverflow.com/questions/62574589
复制相似问题