Добавьте аннотации в классы, созданные avro-maven-plugin

Я создаю классы Java из файла AVSC, используя avro-maven-plugin, и хочу добавить аннотацию @JsonProperty к некоторым полям класса.

Я хочу понять, как я могу это сделать. В файле Record.vm в конфигурации упоминается тег javaAnnotation, но он не работает должным образом.

pom.xml

<plugin>
<groupId>org.apache.avro</groupId>
<artifactId>avro-maven-plugin</artifactId>
<version>${avro.version}</version>
<dependencies>
    ...
</dependencies>
<executions>
    <execution>
        <phase>generate-sources</phase>
        <goals>
            <goal>schema</goal>
        </goals>
        <configuration>
            <fieldVisibility>PRIVATE</fieldVisibility>
            <enableDecimalLogicalType>true</enableDecimalLogicalType>
            <stringType>String</stringType>
            <templateDirectory>/com/.../avro/compiler/specific/templates/</templateDirectory>
            <dateTimeLogicalTypeImplementation>joda</dateTimeLogicalTypeImplementation>
        </configuration>
    </execution>
</executions>

Снипит из Record.vm

Я хочу, чтобы сгенерированный класс выглядел так

Я пробовал что-то подобное, но это не сработало

[{
    "namespace": "com..avro",
    "type": "record",
    "name": "myClass",
    "fields": [
        {
            "name": "my_variable", 
            "type": "int",
            "javaAnnotations":"com.fasterxml.jackson.annotation.JsonProperty(\"my_variable\")",
            "javaAnnotations":[
                "com.fasterxml.jackson.annotation.JsonProperty(\"my_variable\")"
            ]
        }
    ]
}]
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
118
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете указать как аннотации на уровне класса, так и аннотации на уровне поля, добавив поле «javaAnnotation» в соответствующем месте определения avsc:

[{
    "namespace": "com..avro",
    "type": "record",
    "name": "myClass",
    "javaAnnotation": "MyClassAnnotation",
    "fields": [
        {
            "name": "my_variable", 
            "type": "int",
            "javaAnnotation": "com.fasterxml.jackson.annotation.JsonProperty(\"my_variable\")"
        }
    ]
}]

Другие вопросы по теме