# pure-spring-no-xml **Repository Path**: ismartyx/pure-spring-no-xml ## Basic Information - **Project Name**: pure-spring-no-xml - **Description**: no xml spring - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-05 - **Last Updated**: 2026-05-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Pure Spring (No XML, No Spring Boot) 一个使用纯 Spring Framework(无 XML 配置,无 Spring Boot)和 Jetty 服务器的 Java Web 应用程序项目。 ## 项目特点 - **纯 Spring Framework**: 使用 Spring 5.3.39,无 Spring Boot 依赖 - **零 XML 配置**: 完全基于 Java 注解和配置类 - **嵌入式 Jetty**: 使用 Jetty 9.4.54 作为嵌入式 Web 服务器 - **现代 Java**: 基于 Java 17 - **轻量级**: 最小化依赖,专注核心功能 ## 技术栈 | 技术 | 版本 | |---------------------|------------------| | Java | 17 | | Spring Framework | 5.3.39 | | Jetty | 9.4.54.v20240208 | | Servlet API (javax) | 3.1.0 | | Jackson | 2.17.1 | | Logback | 1.5.6 | | Maven | 3.x | ## 项目结构 ``` pure-spring-no-xml/ ├── src/ │ └── main/ │ ├── java/ │ │ └── com/ │ │ └── example/ │ │ ├── config/ # Spring 配置类 │ │ │ ├── RootConfig.java │ │ │ ├── WebConfig.java │ │ │ └── WebApplicationInitializer.java │ │ ├── server/ │ │ │ └── JettyServer.java # 主启动类 │ │ └── web/ │ │ └── controller/ # Web 控制器 │ └── resources/ # 资源文件 ├── pom.xml # Maven 配置 └── README.md # 项目说明 ``` ## 快速开始 ### 前置要求 - Java 17 或更高版本 - Maven 3.6 或更高版本 ### 安装和运行 1. **克隆项目** ```bash git clone cd pure-spring-no-xml ``` 2. **编译项目** ```bash mvn clean compile ``` 3. **运行应用** ```bash mvn exec:java ``` 或者直接运行主类: ```bash mvn exec:java -Dexec.mainClass="com.example.server.JettyServer" ``` 4. **访问应用** 服务器启动后,应用将在以下地址运行: ``` http://localhost:19521 ``` ### 构建 JAR 包 ```bash mvn clean package ``` ## 配置说明 ### 服务器配置 - **端口**: 19521(可在 `JettyServer.java` 中修改) - **上下文路径**: `/` - **类加载器**: 启用父类加载器优先,避免类加载冲突 ### Maven 配置 项目使用以下 Maven 插件: - **maven-compiler-plugin**: Java 17 编译支持 - **exec-maven-plugin**: 直接运行主类 ## 开发指南 ### 添加新的控制器 1. 在 `src/main/java/com/example/controller/` 目录下创建控制器类 2. 使用 `@RestController` 或 `@Controller` 注解 3. 配置相应的请求映射 ### 添加新的服务 1. 在 `src/main/java/com/example/service/` 目录下创建服务类 2. 使用 `@Service` 注解 3. 通过构造函数注入或 `@Autowired` 进行依赖注入 ### 配置类 创建配置类时使用: - `@Configuration`: 标记配置类 - `@ComponentScan`: 配置组件扫描 - `@EnableWebMvc`: 启用 Spring MVC ## 故障排除 ### 常见问题 1. **NoSuchMethodError 异常** - 确保所有 Jetty 依赖使用相同版本 - 检查 `pom.xml` 中的版本一致性 2. **端口占用** - 修改 `JettyServer.java` 中的端口号 - 或者停止占用 19521 端口的其他应用 3. **类加载冲突** - 项目已配置 `setParentLoaderPriority(true)` 来避免此问题 ### 日志配置 项目使用 Logback 进行日志记录。可以在 `src/main/resources/` 目录下添加 `logback.xml` 文件来自定义日志配置。 ## 扩展功能 ### 添加数据库支持 在 `pom.xml` 中添加数据库相关依赖: ```xml org.springframework spring-jdbc ${spring.version} com.h2database h2 2.2.224 ``` ### 添加安全支持 ```xml org.springframework.security spring-security-web 6.2.1 ``` ## 许可证 本项目采用 MIT 许可证。详情请参阅 LICENSE 文件。 ## 贡献 欢迎提交 Issue 和 Pull Request 来改进这个项目。 ## 联系方式 如有问题或建议,请通过以下方式联系: - 提交 GitHub Issue - 发送邮件至:[your-email@example.com] --- **注意**: 这是一个学习和演示项目,展示了如何在不使用 Spring Boot 的情况下构建现代 Spring 应用程序。