Spring 3支持RESTful API/APP配置示例

简介:

  1. 支持APP&API模式的RESTful配置示例

XML示例:
… default-autowire="byName"   >
<!—byName, byType, autodetect -->
            <context:component-scan base-package="com.**.controller"/>
            <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
                    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
 
    <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
            <property name="ignoreAcceptHeader" value="true"/>
            <property name="defaultContentType" value="text/html"/>
            <property name="mediaTypes">
                                    <map>
                                                <entry key="json" value="application/json" />
                                                <entry key="xml" value="application/xml" />
                                    </map>
                        </property>
                        <property name="favorParameter" value="false"/>
                        <property name="viewResolvers">
                                    <list>
                                    <bean class="org.springframework.web.servlet.view.BeanNameViewResolver" />
                                        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                                            <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
                                            <property name="prefix" value="/WEB-INF/jsp/"/>
                                            <property name="suffix" value=".jsp"></property>
                                        </bean>
                                    </list>
                        </property>
                       
<property name="defaultViews">
            <list>
            <!-- for application/json -->
            <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
            <!-- for application/xml -->
            <bean class="org.springframework.web.servlet.view.xml.MarshallingView" >
               <property name="marshaller">
                    <bean class="org.springframework.oxm.xstream.XStreamMarshaller"/>
<!—这是很重要的列装器可以方便地实现bean<=>xml, 需另外下载(http://xstream.codehaus.org/download.html),可比JAXB套件易用哦 -- >
                 </property>
            </bean>
            </list>
</property>
</bean>
 
2. 支持API模式的RESTful配置特例
Spring 3 Servlet + HttpMessageConverter + Annotation
         StringHttpMessageConverter:  Text converter
         FormHttpMessageConverter : Form converter (application/x-www-form-urlencoded , ampped to MultiValueMap<String,String>)
         MarshallingHttpMessageConverter: XML converter(marshaller)
         MappingJacksonHttpMessageConverter: JSON converter(via Jackson’s ObjectMapper
         AtomFeedHttpMessageConverter: ATOM converter(via ROME’s Feed API)
         RssChannelHttpMessageConverter : RSS converter(via ROME’s Feed API)
XML示例:
<bean class="org.springframework.web.servlet.mvc.annotation .AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="jsonConverter" />
<ref bean="marshallingConverter" />
<ref bean="atomConverter" />
</list>
</property>
</bean>
<bean id="jsonConverter" class="org.springframework.http.converter.json .MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes" value="application/json" /> <
/bean>
 
<bean id="marshallingConverter" class="org.springframework.http.converter.xml .MarshallingHttpMessageConverter">
<constructor-arg ref="jaxbMarshaller" />
<property name="supportedMediaTypes" value="application/xml"/>
</bean>
<bean id="jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="classesToBeBound">
<list>
<value>com.company.project.bean.EntityA</value>
<value>com.company.project.bean.EntityB</value>
</list>
</property>
</bean>
<bean id="atomConverter" class="org.springframework.http.converter.feed .AtomFeedHttpMessageConverter">
<property name="supportedMediaTypes" value="application/atom+xml" />
</bean>
控制器代码示例:
@RequestMapping(method=RequestMethod.GET, value="/emp/{id}", headers="Accept=application/json")
public @ResponseBody EntityA getEntityA(@PathVariable String id) { … return EntityA;}
 
2. 支持APP模式的RESTful配置特例
 
Spring 3 Servlet + MVC + Annotation
         ContentNegotiatingViewResolver:  Resource representation negotiation
         BeanNameViewResolver: Common view resolver based on bean name as spring-like.
         UrlBasedViewResolver:  Spring MVC view same as former Spring version (JSP for text/html)
         InternalResourceViewResolver: Mostly like to UrlBasedViewResolver.
         MappingJacksonJsonView : JSON view
         MarshallingView : XML view (via XStreamMarshaller or Jaxb2Marshaller, etc)
XML配置示例:
<beans …    xmlns:p= http://www.springframework.org/schema/p     xmlns:context="http://www.springframework.org/schema/context”   … default-autowire="byName"  
            <context:component-scan base-package="com.**.controller"/>           
            <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
        <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
       <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
            <property name="ignoreAcceptHeader" value="true"/>
                        <property name="defaultContentType" value="text/html"/>
                        <property name="mediaTypes">
                                    <map>
                                                <entry key="json" value="application/json" />
                                                <entry key=“html" value=“text/html" />
                                                <entry key="xml" value="application/xml" />
                                    </map>
                        </property>
<property name="favorParameter" value="false"/>
 
<property name="viewResolvers">
                                    <list>
                                        <bean class="org.springframework.web.servlet.view.BeanNameViewResolver" />
                                        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                                            <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
                                            <property name="prefix" value="/WEB-INF/pages"/><property name="suffix" value=".jsp"></property>
                                        </bean>
                                    </list>
</property>
 
<property name="defaultViews">
                                    <list>
                                    <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
                                    <bean class="org.springframework.web.servlet.view.xml.MarshallingView" >
                                       <property name="marshaller">
                                                <bean class="org.springframework.oxm.xstream.XStreamMarshaller"/>
<!– it needs the jar libaray: xstream.jar(http://xstream.codehaus.org/download.html) -->
   </property>
                                    </bean>
                                    </list>
</property>
    </bean>
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource" p:basename="i18n/messages"/>
 
控制器代码示例:
@PATH(“/{id}”)
public ModelAndView show(@PathVariable java.lang.Integer id) throws Exception {
                        UserInfo userInfo = manger.get(id);
                        return new ModelAndView("/userinfo/edit","userInfo",userInfo);

本文转自 dannyy1026 51CTO博客,原文链接:http://blog.51cto.com/dannyyuan/671654


相关文章
|
2月前
|
运维 数据可视化 测试技术
从混乱到清晰:API开发追踪工具实用技巧与工具配置完整拆解
API开发追踪工具是提升团队协作效率、实现接口全流程管理的关键。它整合任务看板、文档同步、版本控制与多角色协作,助力前后端及第三方高效对接。本文详解其核心功能、选型建议与落地实践,助你打造透明、规范的API协作体系。
|
2月前
|
监控 供应链 API
速卖通商品 API,开发者示例
速卖通商品API是速卖通开放平台为开发者提供的接口,支持获取商品详情、订单管理等功能。具备多语言、多货币支持,适用于全球电商场景。可应用于商品分析、价格监控、竞品对比和库存管理等业务。文档提供Python调用示例,便于快速集成使用。
|
2月前
|
JSON API 数据格式
洋码头商品 API 示例指南(Python 实现)
洋码头是国内知名跨境电商平台,提供商品搜索、详情、分类等API接口。本文详解了使用Python调用这些API的流程与代码示例,涵盖签名生成、请求处理及常见问题解决方案,适用于构建选品工具、价格监控等跨境电商应用。
|
2月前
|
域名解析 网络协议 API
【Azure Container App】配置容器应用的缩放规则 Managed Identity 连接中国区 Azure Service Bus 问题
本文介绍了在 Azure Container Apps 中配置基于自定义 Azure Service Bus 的自动缩放规则时,因未指定云环境导致的域名解析错误问题。解决方案是在扩展规则中添加 `cloud=AzureChinaCloud` 参数,以适配中国区 Azure 环境。内容涵盖问题描述、原因分析、解决方法及配置示例,适用于使用 KEDA 实现事件驱动自动缩放的场景。
|
2月前
|
缓存 JSON API
VIN车辆识别码查询车五项 API 实践指南:让每一俩车有迹可循(Python代码示例)
VIN(车辆识别代码)是全球唯一的17位汽车标识码,可快速获取车架号、发动机号、品牌型号等核心信息。在二手车交易、保险理赔、维修保养等场景中,准确解析VIN有助于提升效率与风控能力。本文介绍VIN码结构、适用场景,并提供Python调用示例及优化建议,助力企业实现车辆信息自动化核验。
457 1
|
2月前
|
Java Spring
Spring Boot配置的优先级?
在Spring Boot项目中,配置可通过配置文件和外部配置实现。支持的配置文件包括application.properties、application.yml和application.yaml,优先级依次降低。外部配置常用方式有Java系统属性(如-Dserver.port=9001)和命令行参数(如--server.port=10010),其中命令行参数优先级高于系统属性。整体优先级顺序为:命令行参数 &gt; Java系统属性 &gt; application.properties &gt; application.yml &gt; application.yaml。
500 0
|
1月前
|
安全 算法 Java
在Spring Boot中应用Jasypt以加密配置信息。
通过以上步骤,可以在Spring Boot应用中有效地利用Jasypt对配置信息进行加密,这样即使配置文件被泄露,其中的敏感信息也不会直接暴露给攻击者。这是一种在不牺牲操作复杂度的情况下提升应用安全性的简便方法。
576 10
|
2月前
|
测试技术 API 开发者
淘宝关键词搜索商品列表API接入指南(含Python示例)
淘宝关键词搜索商品列表API是淘宝开放平台的核心接口,支持通过关键词检索商品,适用于比价、选品、市场分析等场景。接口提供丰富的筛选与排序功能,返回结构化数据,含商品ID、标题、价格、销量等信息。开发者可使用Python调用,需注意频率限制与错误处理,建议先在沙箱环境测试。
|
2月前
|
人工智能 安全 Java
Spring Boot yml 配置敏感信息加密
本文介绍了如何在 Spring Boot 项目中使用 Jasypt 实现配置文件加密,包含添加依赖、配置密钥、生成加密值、在配置中使用加密值及验证步骤,并提供了注意事项,确保敏感信息的安全管理。
707 1
|
2月前
|
JSON API 开发者
唯品会商品API,开发者示例
唯品会商品API支持获取商品详情、价格及库存信息,适用于开发者集成商品数据。通过如`vip.item_get`等接口,可使用Python等语言调用,实现商品信息查询与列表筛选。实际使用需申请官方授权或通过第三方平台接入,并遵守相关调用规则。