Spring 4.x MVCで、JSONサービス

JSONサービスに関して、
JerseyかSpring MVCどちらでやるか、かなり悩んでるところなんですが、
出来れば、Spring MVCに集約したと思っているので、
その関連で、調べたことを書こうかと思います。
Spring MVCでのJSONサービスの実装方法についてですが、
Spring 4系に、JSONのサポートが追加されました。
前よりは、簡単に作れる様になってるような気が?します...。
JAXBも使えます。
JAXBに関しては、こちらを参考にして下さい。
JAXBに関して - クロノスの技術系ブログ
@RestControllerというアノテーションが追加されていて、
サービスクラスにそれを付けるとそのクラスがRestのサービスクラスとして扱われます。

@RestController 
public class MyService {
}

ちなみに@Controllerだと、エラーになってしまい駄目です。
Spring 4系からは、@RestControllerを使う様にする必要があります。
次にメソッドは、今まで通り、@RequestMappingで、パス、メソッドなどの設定を書きます。

@RestController 
public class MyService {
	@RequestMapping(value = "/json", method = RequestMethod.GET, produces="application/json")
	public PersonResource json() {
		ObjectFactory factory = new ObjectFactory();
		PersonResource personResource = factory.createPersonResource();
		List<Person> personList = personResource.getPerson();
		PersonResource.Person person = new PersonResource.Person();
		person.setId("100");
		person.setName("AAAAAA");
		personList.add(person);
		return personResource;
		return getResource();
	}
}

JAXBで検証して見ました。
問題なく動作したので、こんな感じで問題ないと思います。
applicationContext.xmlの設定は、Spring MVCの設定のままで問題ありません。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:util="http://www.springframework.org/schema/util"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:jee="http://www.springframework.org/schema/jee"
	xmlns:lang="http://www.springframework.org/schema/lang"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation="
		http://www.springframework.org/schema/beans
		http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
		http://www.springframework.org/schema/util
		http://www.springframework.org/schema/util/spring-util-4.0.xsd
		http://www.springframework.org/schema/aop
		http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
		http://www.springframework.org/schema/tx
		http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
		http://www.springframework.org/schema/jee
		http://www.springframework.org/schema/jee/spring-jee-4.0.xsd
		http://www.springframework.org/schema/lang
		http://www.springframework.org/schema/lang/spring-lang-4.0.xsd
		http://www.springframework.org/schema/context
		http://www.springframework.org/schema/context/spring-context-4.0.xsd
		http://www.springframework.org/schema/mvc
		http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
	<mvc:annotation-driven />
	<!-- Autowire -->
	<context:component-scan base-package="chronos.system" scoped-proxy="targetClass"/>
	<!-- AOP -->
	<aop:aspectj-autoproxy/>
</beans>

web.xmlの設定もSpring MVCと同様の設定になります。

<web-app id="webflow" version="2.4" 
	xmlns="http://java.sun.com/xml/ns/j2ee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	<filter>
		<filter-name>characterEncodingFilter</filter-name>
			<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>characterEncodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
			/WEB-INF/config/spring/applicationContext.xml
		</param-value>
	</context-param>
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	<servlet>
		<servlet-name>dispatcher</servlet-name>
			<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
			<init-param>
				<param-name>contextClass</param-name>
				<param-value>
					org.springframework.web.context.support.AnnotationConfigWebApplicationContext
				</param-value>
			</init-param>
	</servlet>
	<servlet-mapping>
		<servlet-name>dispatcher</servlet-name>
		<url-pattern>/*</url-pattern>
	</servlet-mapping>
</web-app>

しかし、問題は、JSON-Pなんですが、結構がんばらないとまだ駄目ぽいので、
Jerseyの方が楽だなぁと思ったりしてます。