Я имею дело с JWT и настройкой пользовательских полей. Все эти настраиваемые поля описаны в Enum:
public enum JwtFields {
userId,
manyOtherCustomFieldsBellow,
blaBlaBla
}
Поэтому, когда я создаю токен вместо передачи строк для ключей, я использую enum, поскольку он быстрее и безопаснее.
Claims claims = Jwts.claims().setSubject(userId);
claims.put(JwtFields.someCustomFieldFromEnum.name(), "someValue")
Теперь, когда я проверяю, что полученный токен действителен и все необходимые настраиваемые поля присутствуют, я хочу десериализовать его в некоторый класс TokenDecoded
и присоединить его к полезной нагрузке запроса, поэтому всякий раз, когда я обрабатываю запрос У меня будут все значения и поля из токена JWT.
Однако этот класс десериализации в значительной степени содержит все поля из перечисления, и если завтра я добавлю новые поля в перечисление, мне придется также вручную обновите мой класс TokenDecoded
, включив в него и это новое настраиваемое поле.
Вопрос: Как я могу сделать этот класс TokenDecoded
основанным на полях перечисления, так что если я добавить новое поле в перечисление, оно будет автоматически присутствовать в TokenDecoded
? Есть ли отражение? Или это может быть достигнуто проще?