Для своего проекта я конвертирую классы в json с помощью jackson fastxml. Теперь мне нужно изменить в одном месте способ преобразования объектов, чтобы @JsonIgnore игнорировался, а свойство сериализовалось.
Я обнаружил, что могу сделать это, расширив JacksonAnnotationIntrospector и пользовательскую аннотацию. Проблема в том, что пользовательская аннотация видна только в том случае, если она определена в том же пакете/проекте/osgi, что и реализующий класс, в то время как я хотел бы определить ее в пакете службы, который предоставляет преобразование json. Если аннотация находится в пакете реализации, я не могу сослаться на нее в JacksonAnnotationIntrospector, и мне нужно будет проверить имя аннотации.
У меня есть две одинаковые аннотации с разницей только в пакете:
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.ANNOTATION_TYPE, ElementType.METHOD, ElementType.CONSTRUCTOR, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface AnnotationName {
}
Когда я устанавливаю обе реализации, я вижу только аннотацию, определенную из того же пакета/проекта/osgi, что и класс реализации. Есть ли ограничение по этому поводу или кто-нибудь знает, в чем может быть проблема?
*
. Всегда импортируйте полное имя класса и имейте полный список явного импорта. 31.07.2017