Пользовательская аннотация для настроенного метода toString, который возвращает первые 10 элементов из ArrayList - PullRequest
0 голосов
/ 18 февраля 2020

Я пытаюсь создать пользовательскую аннотацию на уровне класса, чтобы создать метод 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 ?

Я проверил различные онлайн-форумы, но не получил никакой соответствующей информации для их реализации.

Пожалуйста, помогите.

Спасибо

...