试图在一个默认toString()方法来编织为大量的DTO的,使用编译时只织。 我们的目标是恢复使用杰克逊库JSON表示。
其次在建议这篇文章 ,把它变成注释风格方面的配置,并结束了与下面的代码:
public @Aspect class JsonToStringAspect {
private interface JsonToString {
public String toString();
}
public static class JsonToStringImpl implements JsonToString {
public String toString() {
return SingletonJsonEncoder.toJsonString(this);
}
}
@SuppressWarnings("unused")
@DeclareParents(value = "com.mycompany.dto..*", defaultImpl = JsonToStringImpl.class)
private JsonToString implementedInterface;
}
运行javap
对得到的类表明他们实现JsonToString接口,但没有了toString()方法的任何地方迹象。
如果我改变方法名的东西,不与Object.toString碰撞()(例如toString2()),该方法是真正增加。
任何线索如何克服呢? 也许一个@Around
上拦截java.lang.Object.toString()的执行,只针对儿童类下面包切入点建议com.mycompany.dto
? 还是有办法来迫使混入的情况发生?