---
<bean id="stringListProvider" class="com.archnal.util.StringListBodyWriter"/>
---
Java 구현 클래스
---
package com.archnal.util; import java.io.BufferedWriter; import java.io.IOException; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.lang.annotation.Annotation; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import javax.ws.rs.Produces; import javax.ws.rs.WebApplicationException; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MultivaluedMap; import javax.ws.rs.ext.MessageBodyWriter; @Produces( { MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) public class StringListBodyWriter implements MessageBodyWriter<List<String>> { public long getSize(List<String> t, java.lang.Class<?> type, java.lang.reflect.Type genericType, java.lang.annotation.Annotation[] annotations, javax.ws.rs.core.MediaType mediaType) { Iterator<String> i = t.iterator(); long size = 0; while (i.hasNext()) { size += i.next().length(); } return size; }; @Override public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) { return type.equals(ArrayList.class) && (mediaType.equals(MediaType.TEXT_PLAIN_TYPE) || mediaType.equals(MediaType.TEXT_XML_TYPE) || mediaType .equals(MediaType.APPLICATION_JSON_TYPE)); } @Override public void writeTo(List<String> t, Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType, MultivaluedMap<String, Object> httpHeaders, OutputStream entityStream) throws IOException, WebApplicationException { BufferedWriter bw = new BufferedWriter(new OutputStreamWriter( entityStream)); String ts = null; for (String aT : t) { ts += aT; } bw.write(ts); bw.flush(); } }