Я пытаюсь создать пользовательскую аннотацию на уровне класса, чтобы создать метод ToString (), который возвращает все значения поля в строке, как они есть, но если какое-либо поле имеет тип List, то мы хотим только первые 10 элементы из списка, а не весь список (как в lombok, он печатает весь список).
@Getter
@Setter
public class Entity{
private EntityType type; //type is a string (modifier, getter, setter)
private String entityName;
private String entityValue;
private List<EntityList> entityList; //list retrieve from database can contain 100s of element
@Override
//primarly using for logging purposes
public String toString() {
return "SomeEntity [type=" + type + ", entityName=" + entityName + ", attributeValue="
+ entityValue + ", entityList" = entityList + "]";
}
}
Здесь метод toString возвращает все элементы Arraylist, что приводит к грязным журналам (если список содержит, скажем, 1000 элементов). Чтобы избежать этого, я хочу использовать пользовательскую аннотацию ToString, которая генерирует эквивалент toString во время compl ie и возвращает все поля, но если присутствует какой-либо тип List, тогда будут возвращены / напечатаны только первые 10 элементов из списка.
Я пробовал это
@Override
//primarly using for logging purposes
public String toString() {
return "SomeEntity [type=" + type + ", entityName=" + entityName + ", attributeValue="
+ entityValue + ", entityList" = Utils.toString(entityList) + "]";
}
public class Utils {
private static final int TO_STRING_COLLECTION_LIMIT = 10;
public static <E> String toString(Collection<E> collection) {
if (CollectionUtils.isEmpty(collection)) {
return "<empty>";
} else {
return "{size=" + collection.size() + ", collection=" +
collection.stream().limit(TO_STRING_COLLECTION_LIMIT)
.map(Object::toString).collect(Collectors.joining(",", "[", "]")) +
"}";
}
}
}
, но для расширения я хочу создать пользовательскую аннотацию.
Как я могу создать эту пользовательскую аннотацию ToString в Spring Boot ?
Я проверил различные онлайн-форумы, но не получил никакой соответствующей информации для их реализации.
Пожалуйста, помогите.
Спасибо