原文:http://iwantmoon.com/Post/f94e49caf9b6455db7158474bab4c4dd
因為工作需要,現在要去做開放平臺,考慮了多種方案之后,基本確定 下來,Http Api and Web Serivce兩種,REST API 就需要通過Spring Mvc輸出Json,這里面其實還是有一些工作可以做的,比如大量用戶訪問的情況下,怎保證性能、保證流量和穩定性。當然本篇我們還是主要討論如何去實現它。
接下來,大家跟著我做吧。
首先,我們要了解Spring Mvc本身并沒有提供JsonView的支持,這里面,我們需要通過Jackson 第三方實現的幫助,實現他。
那么我們要加入依賴引用:
<!-- json --> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-core-lgpl</artifactId> <version>1.8.1</version> </dependency> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-lgpl</artifactId> <version>1.8.1</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.1.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.1.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.1.0</version> </dependency>
上面是Jackson部分,下面還有spring mvc和其他的部分
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>${servlet.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>${jstl.version}</version> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>${jsp.version}</version> <scope>provided</scope> </dependency>
mvn clean install
經過一段時間的等待,依賴包下載到本地,OK,我們可以開始配置 我們的項目了。
由于本文中心是Spring mvc 輸出Json,所以會略過Spring mvc的配置,如果需要,大家可以參考spring.io
下面,我們加入Jaskson的配置:
<bean id="stringConverter" class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/plain;charset=UTF-8</value> </list> </property> </bean> <!-- 輸出對象轉JSON支持 --> <bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="stringConverter"/> <ref bean="jsonConverter" /> </list> </property> </bean>
寫一個Sample Controller:
@RestControllerpublic class JsonController extends BaseController { @RequestMapping(value = "/user", method = RequestMethod.GET) @JsonView(User.WithoutPassWordView.class) public User getUser() { return new User("eric", "7!jd#h23"); }}
public class User { public interface WithoutPasswordView {}; public interface WithPasswordView extends WithoutPasswordView {}; private String username; private String password; public User() { } public User(String username, String password) { this.username = username; this.password = password; } @JsonView(WithoutPasswordView.class) public String getUsername() { return this.username; } @JsonView(WithPasswordView.class) public String getPassword() { return this.password; }}
OK,下面是運行結果:
大家有問題,歡迎加入我們敲代碼(http://iwantmoon.com)官方QQ群:299388502
新聞熱點
疑難解答