Pozeral som sa na internals dresu, na to ako tokonvertuje jednoduché POJO na Json. Jersey má rozhranie Providers, ktoré poskytnú zoznam kontextuResolvers vzhľadom na triedu a mediaType. akonáhle sa dostaneme do kontextuResolver, môžeme dostať Context a Marshaller z neho, ktoré sa môžu použiť na získanie reťazca json, ako ukážeme nižšie.
umožňuje predpokladať, že chceme serializovať Pojo "obj". kód bude vyzerať nasledovne
Providers ps = ...
ContextResolver<JAXBContext> resolver = ps.getContextResolver(obj.getClass(), MediaType.APPLICATION_JSON_TYPE);
JAXBContext ctx = resolver.getContext(obj.getClass());
ctx.createMarshaller().marshal(obj, writer);
Týmto spôsobom môžeme nakonfigurovať akékoľvek POJO, ktoré má platný kontextový riešiteľ json. ale otázkou je, ako dostaneme obsluhu pre poskytovateľov.
PS: Nekompiloval som tento kód, ale z toho, čo môžem vidieť zo zdroja, to je to, čo dres robí. O tom, prečo robím všetky tieto veci, takže môžeme premeniť objekt na JSON priamo s JAX-RS apis. namiesto použitia akéhokoľvek implementačného kódu.
odpovede:
1 pre odpoveď č. 1V zdrojovej triede JAX-RS použite anotáciu @Context, aby ste Jerseyovi povedali, aby si výrobcov vstrekol:
@Context Producers producers;
0 pre odpoveď č. 2
Takže vaša otázka je: "ako nájsť poskytovateľov"?
Musíte napísať kód, aby ste našli triedy v triede, ktoré sú označené ako @Provider.