Prechádzať zdrojové kódy

init: 从 micro-frontend-scaffold 后端脚手架初始化

- Spring Boot 2.7 + Java 8
- 兼容东方通 TongWeb WAR 打包
- 包含 HelloController 示例
ligb 3 týždňov pred
commit
5532c0b801

+ 5 - 0
.gitignore

@@ -0,0 +1,5 @@
+target
+*.class
+.idea
+*.iml
+.vscode

+ 29 - 0
README.md

@@ -0,0 +1,29 @@
+# 投研平台 · 后端工程(Spring Boot + Java 8 + WAR)
+
+Spring Boot 2.7.x + Java 8 + WAR(兼容东方通 TongWeb 7/8 部署)。
+
+本仓库基于 `D:/Code/micro-frontend-scaffold/backend/` 脚手架裁剪,只包含后端代码。
+
+## 技术栈
+
+| 模块 | 版本 |
+| --- | --- |
+| Spring Boot | 2.7.x |
+| Java | 1.8 |
+| 打包格式 | WAR(兼容东方通 TongWeb 7/8) |
+
+## 启动(本地)
+
+```bash
+mvn spring-boot:run       # 或 mvn package 后 java -jar target/ir-backend.war
+```
+
+验证:`curl http://localhost:8080/api/hello`
+
+> 本机未安装 Maven 时,可先下载并配置 Maven,或改用 IDEA 内置 Maven 运行。
+
+## 远端
+
+- Gitea: http://localhost:3000/ligb/invest-research-backend
+- SSH: ssh://53100@localhost:2222/ligb/invest-research-backend.git
+- 前端仓库: http://localhost:3000/ligb/invest-research-frontend

+ 75 - 0
pom.xml

@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>2.7.18</version>
+        <relativePath/>
+    </parent>
+
+    <groupId>com.demo</groupId>
+    <artifactId>mf-backend</artifactId>
+    <version>1.0.0</version>
+    <packaging>war</packaging>
+    <name>mf-backend</name>
+    <description>微前端平台后端服务(兼容东方通 TongWeb 部署)</description>
+
+    <properties>
+        <java.version>1.8</java.version>
+        <maven.compiler.source>1.8</maven.compiler.source>
+        <maven.compiler.target>1.8</maven.compiler.target>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    </properties>
+
+    <dependencies>
+        <!-- Web 依赖:排除内嵌 Tomcat,便于在东方通等外置容器部署 -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-starter-tomcat</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <!-- 内嵌 Tomcat 作为 provided:开发/本地以 java -jar 运行时生效;
+             打进 WAR 时不包含,避免与东方通 Servlet 容器冲突 -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-tomcat</artifactId>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <!-- WAR 包名称(部署到东方通时的应用名) -->
+        <finalName>mf-backend</finalName>
+        <plugins>
+            <!-- 无 web.xml 也可打 WAR(Servlet 3.0 注解方式,由 SpringBootServletInitializer 引导) -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-war-plugin</artifactId>
+                <configuration>
+                    <failOnMissingWebXml>false</failOnMissingWebXml>
+                </configuration>
+            </plugin>
+            <!-- 打包为可执行 WAR:既可用 java -jar 本地运行,也可部署到东方通 -->
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+</project>

+ 25 - 0
src/main/java/com/demo/mf/MfApplication.java

@@ -0,0 +1,25 @@
+package com.demo.mf;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.builder.SpringApplicationBuilder;
+import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
+
+/**
+ * 应用启动类。
+ * 继承 SpringBootServletInitializer:支持部署到东方通 TongWeb 等外置 Servlet 容器(WAR 方式)。
+ * 同时保留 main 方法,支持本地以 java -jar 方式运行。
+ */
+@SpringBootApplication
+public class MfApplication extends SpringBootServletInitializer {
+
+    @Override
+    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
+        // WAR 部署时通过该方法正确加载主配置类
+        return builder.sources(MfApplication.class);
+    }
+
+    public static void main(String[] args) {
+        SpringApplication.run(MfApplication.class, args);
+    }
+}

+ 28 - 0
src/main/java/com/demo/mf/config/CorsConfig.java

@@ -0,0 +1,28 @@
+package com.demo.mf.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.cors.CorsConfiguration;
+import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
+import org.springframework.web.filter.CorsFilter;
+
+/**
+ * 跨域配置:允许微前端各子应用(主应用、PC、移动端)调用后端接口。
+ * 生产环境建议按实际部署域名收紧 allowedOriginPatterns。
+ */
+@Configuration
+public class CorsConfig {
+
+    @Bean
+    public CorsFilter corsFilter() {
+        CorsConfiguration config = new CorsConfiguration();
+        config.addAllowedOriginPattern("*");
+        config.addAllowedHeader("*");
+        config.addAllowedMethod("*");
+        config.setAllowCredentials(true);
+
+        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
+        source.registerCorsConfiguration("/api/**", config);
+        return new CorsFilter(source);
+    }
+}

+ 25 - 0
src/main/java/com/demo/mf/controller/HelloController.java

@@ -0,0 +1,25 @@
+package com.demo.mf.controller;
+
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 示例接口,用于验证前后端联通与 TongWeb 部署是否正常。
+ */
+@RestController
+@RequestMapping("/api")
+public class HelloController {
+
+    @GetMapping("/hello")
+    public Map<String, Object> hello() {
+        Map<String, Object> result = new HashMap<>();
+        result.put("message", "Hello from backend");
+        result.put("serverTime", LocalDateTime.now().toString());
+        return result;
+    }
+}

+ 18 - 0
src/main/resources/application.yml

@@ -0,0 +1,18 @@
+server:
+  port: 8080
+  servlet:
+    context-path: /
+
+spring:
+  application:
+    name: mf-backend
+  # 多应用部署时关闭依赖 JMX 的 MBean 冲突(东方通常见问题)
+  jmx:
+    enabled: false
+  jackson:
+    date-format: yyyy-MM-dd HH:mm:ss
+    time-zone: GMT+8
+
+logging:
+  level:
+    com.demo.mf: info