You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否基于JDK1.4以非注解方式开发Spring RESTful端点?

解答你的Spring REST开发与部署疑问

1. 基于JDK 1.4开发非注解式Spring RESTful端点是可行的

首先,你需要选择Spring 2.x系列版本(Spring 3.x及以上开始要求JDK 5+,而注解特性正是JDK 5才引入的),这个系列完全兼容JDK 1.4和Servlet 2.4规范,完美匹配你的OC4J 10.1.3环境。

你可以完全通过XML配置而非注解来定义REST端点,核心实现思路如下:

  • 编写传统Spring MVC控制器(实现Controller接口或继承AbstractController等基类)
  • 在XML配置文件中通过SimpleUrlHandlerMapping映射URL到对应控制器
  • 配置处理器适配器(如SimpleControllerHandlerAdapter)和消息转换器(如果需要返回JSON/XML,可选用兼容JDK1.4的库如Jackson 1.x)

举个简单的实现示例:

控制器代码(无注解)

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

public class UserRestController extends AbstractController {
    @Override
    protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
        // 模拟获取用户数据
        User user = new User(1, "Shashanka");
        // 手动序列化JSON(或用Jackson 1.x等兼容JDK1.4的库)
        String json = "{\"id\": " + user.getId() + ", \"name\": \"" + user.getName() + "\"}";
        
        response.setContentType("application/json");
        response.getWriter().write(json);
        return null; // 直接输出响应,无需视图解析
    }
}

// 简单的User实体类(JDK1.4需手动编写getter)
class User {
    private int id;
    private String name;
    
    public User(int id, String name) {
        this.id = id;
        this.name = name;
    }
    
    public int getId() { return id; }
    public String getName() { return name; }
}

Spring MVC XML配置(WEB-INF/applicationContext.xml)

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

    <!-- 注册控制器Bean -->
    <bean id="userRestController" class="com.example.UserRestController"/>

    <!-- URL与控制器的映射配置 -->
    <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="/user">userRestController</prop>
            </props>
        </property>
    </bean>

    <!-- 配置处理器适配器,识别传统控制器 -->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
</beans>

最后记得在web.xml中配置Spring的DispatcherServlet,映射REST请求路径即可,全程无需任何注解。

2. 确实无法在OC4J 10.1.3部署SpringBoot RESTful服务

你的判断完全准确:

  • SpringBoot的最低JDK要求是1.6(哪怕是最早期的SpringBoot 1.x版本),而你的环境是JDK 1.4,版本直接不达标;
  • 此外,SpringBoot 1.x要求Servlet容器支持Servlet 2.5及以上,但OC4J 10.1.3仅支持Servlet 2.4,规范版本不兼容;
  • 最后,SpringBoot默认的内嵌容器打包模型,和OC4J的传统WAR部署模型也存在冲突,即使强行调整打包方式,也会因为JDK和Servlet规范的双重限制无法正常运行。

所以在当前环境下,SpringBoot确实不是可行选项,基于Spring 2.x的非注解方式才是适配性最好的方案。

内容的提问来源于stack exchange,提问作者Shashanka Jena

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:39:49