@XmlTransient
Когда вы помечаете поле / свойство с помощью @XmlTransient, вы явно указываете своей реализации JAXB обрабатывать его как несопоставленное свойство. Это полезно, когда менее половины полей / свойств не сопоставлены.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
|
package blog.unmapped; import java.util.List; import javax.xml.bind.annotation.*; @XmlAccessorType (XmlAccessType.FIELD) public class Customer { @XmlTransient private int id; private String firstName; private String lastName; private Address billingAddress; private Address shippingAddress; private List<PhoneNumber> phoneNumbers; } |
Если более половины полей / свойств не сопоставлены, то мы прекращаем получать преимущество конфигурации за исключением, поскольку нам нужно проделать больше работы по исключению свойств с @XmlTransient, чем нужно было бы сделать для сопоставления сопоставленных свойств. Далее я продемонстрирую, как мы можем использовать @XmlAccessorType (XmlAccessType.NONE) для этого варианта использования.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
package blog.unmapped; import java.util.List; import javax.xml.bind.annotation.*; @XmlAccessorType (XmlAccessType.FIELD) public class Customer { @XmlTransient private int id; private String firstName; private String lastName; @XmlTransient private Address billingAddress; @XmlTransient private Address shippingAddress; @XmlTransient private List<PhoneNumber> phoneNumbers; } |
@XmlAccessorType (XmlAccessType.NONE)
Установив @XmlAccessorType (XmlAccessType.NONE), мы отключаем конфигурацию в порядке исключения. Теперь будут отображаться только явно сопоставленные свойства. Это полезно, когда отображается менее половины полей / свойств объекта домена.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
package blog.unmapped; import java.util.List; import javax.xml.bind.annotation.*; @XmlAccessorType (XmlAccessType.FIELD) public class Customer { @XmlTransient private int id; private String firstName; private String lastName; @XmlTransient private Address billingAddress; @XmlTransient private Address shippingAddress; @XmlTransient private List<PhoneNumber> phoneNumbers; } |
Дальнейшее чтение
Если вам понравился этот пост, то вам также нравится:
- Использование @XmlAccessorType JAXB для настройки доступа к полю или свойству
- Игнорирование наследования с @XmlTransient
Ссылка: JAXB и Unmapped Properties от нашего партнера JCG Блеза Дафана в блоге Java XML & JSON Binding .