# javafree2025-examples
**Repository Path**: javafree-cloud/javafree2025-examples
## Basic Information
- **Project Name**: javafree2025-examples
- **Description**: 用于保存JavaFree 框架使用示例工程
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2025-10-30
- **Last Updated**: 2025-12-01
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# JavaFreeCloud2025 快速入门
> 使用 JavaFreeCloud2025 框架(v2.0.1)快速搭建企业级微服务应用。
本仓库包含两个示例工程,分别展示了 JavaFreeCloud2025 框架在不同场景下的应用:
------
## 示例工程概览
### 🟢 **`javafree-springboot-demo`** - 单体应用示例
一个功能完整的独立 Spring Boot 应用,适用于快速上手和学习。
- 特点:
- 集成数据库、缓存、安全认证等全套功能。
- 所有配置文件(如 `mysql.yml`, `jwt.yml`)直接存放于项目 `resources` 目录下。
- **适用场景**:快速原型开发、框架功能学习、小型独立服务部署。
------
### 🔵 **`javafree-springcloud-demo`** - 微服务应用示例
一个基于 Spring Cloud 的分布式微服务系统,体现生产级架构设计。
- 特点:
- 通过 `application.yml` 从 **Nacos 配置中心**动态拉取名为 `javafree-local-xxx.yaml` 的配置。
- 实现配置的集中管理与运行时动态刷新。
- **适用场景**:构建大型、高可用、可扩展的分布式微服务系统。
------
## 准备工作
### 环境要求
| 工具 | 版本 | 推荐下载 |
| ----- | ----------------------- | ------------------------------------------------------------ |
| JDK | 17 或以上 | [Eclipse Temurin](https://adoptium.net/) |
| Maven | 3.6.3+ | [Apache Maven](https://maven.apache.org/download.cgi) |
| IDE | IntelliJ IDEA / Eclipse | [IntelliJ IDEA](https://www.jetbrains.com/idea/) |
| MySQL | 5.7 / 8.0+ | [MySQL Community](https://dev.mysql.com/downloads/mysql/) |
| Redis | 5.0+ | [Windows版 5.0.14.1 ](https://github.com/tporadowski/redis/releases/) |
> ✅ 建议使用 JDK 17+ 和 Maven 3.8+,确保兼容性。
------
## 配置 Maven(关键)
JavaFreeCloud 使用私有 Maven 仓库,需配置 `settings.xml`。
### 1. 文件路径
```bash
# 全局配置(推荐)
{MAVEN_HOME}/conf/settings.xml
# 用户配置
{USER_HOME}/.m2/settings.xml
```
### 2. 配置内容(关键片段)
将以下配置**合并**到你的 `settings.xml` 中:
```xml
E:/maven-repo
aliyun-central
central,!2602177-release-16ys0R,!2602177-snapshot-tixmOn
Aliyun Central
https://maven.aliyun.com/repository/central
2602177-release-16ys0R
68ecafb91a2f30e9eb4f0a45
4M3ESLdeE3(D
2602177-snapshot-tixmOn
68ecafb91a2f30e9eb4f0a45
4M3ESLdeE3(D
javafree-public
2602177-release-16ys0R
https://packages.aliyun.com/68ecb026ccf3499544d8ade3/maven/2602177-release-16ys0r
true
false
2602177-snapshot-tixmOn
https://packages.aliyun.com/68ecb026ccf3499544d8ade3/maven/2602177-snapshot-tixmon
false
true
central
https://repo1.maven.org/maven2
true
javafree-public
```
> ✅ 重点说明:
>
> - `mirrorOf` 中排除私有仓库 ID,避免镜像覆盖。
> - `server` 提供私有仓库认证。
> - `activeProfiles` 确保配置生效。
------
## 选择并配置您的工程
请根据您的需求选择对应的工程进行开发。
### 工程一:`javafree-springboot-demo` (单体应用)
#### 1. 项目结构
```bash
javafree-springboot-demo/
├── src/
│ └── main/
│ ├── java/
│ │ └── com/example/MyApplication.java
│ └── resources/
│ ├── application.yml
│ ├── mysql.yml
│ ├── jwt.yml
│ ├── cache.yml
│ ├── accesslog.yml
│ └── springdoc.yml
├── pom.xml
```
#### 2. `pom.xml` 配置
```xml
4.0.0
com.example
my-javafree-app
1.0-SNAPSHOT
17
17
UTF-8
3.5.6
2.0.1
cn.javafree.cloud
javafree-cloud-dependencies
${javafree.cloud.version}
pom
import
cn.javafree.springboot
javafree-spring-boot-starter
org.projectlombok
lombok
provided
org.springframework.boot
spring-boot-maven-plugin
${spring-boot.version}
```
> ✅ 说明:
>
> - 使用 BOM 管理版本,避免冲突。
> - 引入 `javafree-spring-boot-starter` 即获得全套功能。
#### 3. 主启动类
```java
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
```
#### 4. 核心配置文件说明
该工程的所有配置文件均位于 `src/main/resources` 目录下,通过 `application.yml` 的 `spring.config.import` 功能进行加载。
**`application.yml`**
```yaml
server:
port: 8090
spring:
application:
name: javafree-cloud-demo
config:
import:
- classpath:mysql.yml
- classpath:jwt.yml
- classpath:cache.yml
- classpath:accesslog.yml
- classpath:springdoc.yml
# 文件上传配置
servlet:
multipart:
max-file-size: 512MB
max-request-size: 512MB
enabled: true
file-size-threshold: 0
logging:
level:
ROOT: INFO
cn.javafree.cloud: INFO
file:
name: javafree-springboot-demo.log
debug: false
```
> ✅ **说明**:通过 `import` 机制引入多个 YAML 配置文件,实现配置分离。
>
> 文件说明:
>
> | 文件 | 用途 |
> | --------------- | ---------------------------------------------------- |
> | `mysql.yml` | 数据库连接配置(如 Druid、JPA、MyBatis) |
> | `jwt.yml` | JWT 认证相关配置(密钥、过期时间等) |
> | `cache.yml` | 缓存配置(如 Redis、Caffeine) |
> | `accesslog.yml` | 访问日志记录配置(如拦截器、日志格式) |
> | `springdoc.yml` | API 文档配置(集成 SpringDoc OpenAPI,替代 Swagger) |
>
> ⚠️ 注意:这些文件需放在 `src/main/resources` 目录下。
------
### 工程二:`javafree-springcloud-demo` (微服务应用)
#### 1. 项目结构
```bash
javafree-springcloud-demo/
├── src/
│ └── main/
│ ├── java/
│ │ └── com/example/SpringCloudDemoApplication.java
│ └── resources/
│ ├── application.yml
│ └── logback-spring.xml
├── pom.xml
```
> 💡 说明:
>
> - `application.yml`:应用主配置。优先加载,用于连接 Nacos 配置中心。
#### 2. `pom.xml` 配置
```xml
4.0.0
com.example
javafree-springcloud-demo
1.0-SNAPSHOT
jar
javafree-springcloud-demo
JavaFree SpringCloud 示例工程
UTF-8
17
17
2.0.1
cn.javafree.cloud
javafree-cloud-dependencies
${javafree.cloud.version}
pom
import
cn.javafree.springcloud
javafree-spring-cloud-starter
```
> ✅ 说明:
>
> - 使用 `javafree-cloud-dependencies` 统一管理 Spring Cloud 版本。
> - 引入 `javafree-spring-cloud-starter` 即集成 Nacos、OpenFeign、Gateway、Sentinel 等全套微服务组件。
#### 3. 主启动类
```java
package com.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class SpringCloudDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringCloudDemoApplication.class, args);
}
}
```
#### 4. 核心配置文件说明
**`application.yml`**
```yaml
spring:
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
file-extension: yaml
namespace: dev
group: DEFAULT_GROUP
timeout: 3000
# 注册中心配置
discovery:
server-addr: 127.0.0.1:8848
namespace: dev
group: DEFAULT_GROUP
service: ${spring.application.name}
enabled: true
# 👇 关键:导入多个 Nacos 配置文件(Data ID)
config:
import:
- optional:nacos:javafree-local-application.yaml?refreshEnabled=true
- optional:nacos:javafree-local-datasource.yaml?refreshEnabled=true
- optional:nacos:javafree-local-jwt.yaml?refreshEnabled=true
- optional:nacos:javafree-local-cache.yaml?refreshEnabled=true
- optional:nacos:javafree-local-logging.yaml?refreshEnabled=true
- optional:nacos:javafree-local-accesslog.yaml?refreshEnabled=true
# 建议关闭,除非调试自动配置
debug: false
# 可保留,但优先级低于 logging.yaml 或 logback-spring.xml
logging:
level:
root: info
```
> **核心概念:Nacos 配置中心与 Data ID**
>
> 代码中 `spring.config.import` 列表里的每一项: `optional:nacos:javafree-local-xxx.yaml?refreshEnabled=true`
>
> - `optional:nacos:`: 表示这是一个可选的 Nacos 配置,即使 Nacos 服务器暂时不可用或该配置不存在,应用也能启动(只是缺少这部分配置)。
> - `javafree-local-xxx.yaml`: 这就是你要从 Nacos 拉取的 **Data ID**。
> - `?refreshEnabled=true`: 表示开启配置的动态刷新。当 Nacos 上的这个配置文件被修改并发布后,你的应用能自动感知并更新配置,而无需重启。
>
> ------
>
> **这些 `javafree-local-xxx.yaml` 文件的说明**(需在 Nacos 控制台创建)
>
> | Data ID | 用途说明 |
> | --------------------------------- | ------------------------------------------------------------ |
> | `javafree-local-application.yaml` | 应用通用配置,如服务端口、文件上传限制等。 |
> | `javafree-local-datasource.yaml` | **数据库配置**,包含数据库 URL、用户名、密码等敏感信息。 |
> | `javafree-local-jwt.yaml` | **JWT 安全认证配置**,包含密钥路径、过期时间、白名单等。 |
> | `javafree-local-cache.yaml` | **缓存配置**,定义 Redis 服务器地址、连接池参数、多级缓存策略等。 |
> | `javafree-local-logging.yaml` | **日志级别配置**,动态调整不同包的日志输出级别。 |
> | `javafree-local-accesslog.yaml` | **访问日志配置**,控制操作日志的存储方式(JPA/Elasticsearch)、保留时间等。 |
------
## 启动 Nacos 服务
### 1. 下载并启动 Nacos
```bash
# 下载 Nacos Server
wget https://github.com/alibaba/nacos/releases/download/3.0.2/nacos-server-3.0.2.zip
unzip nacos-server-3.0.2.zip
# 启动(单机模式)
cd nacos/bin
sh startup.sh -m standalone
```
访问:`http://localhost:8080/nacos`
默认账号:`nacos` / `nacos`
### 2. 在 Nacos 中创建配置
在 Nacos 控制台创建 前面介绍的几个`javafree-local-xxx.yaml` 文件

------
## 数据库初始化
JavaFreeCloud 支持 JPA 自动建表或手动 SQL 初始化。
### 1. 创建数据库
```sql
CREATE DATABASE javafree_demo CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```
### 2. 初始化方式
#### ✅ 方式一:使用 Flyway(推荐)
```xml
org.flywaydb
flyway-core
```
> 脚本路径:`classpath:db/migration/mysql/V1.0__create_tables.sql`
#### ✅ 方式二:手动执行 SQL
从工程目录中提取 SQL 并执行:
```
db/migration/
├── V1.0__create_tables.sql
|── V1.1__insert_data.sql
```
------
## 启动与验证
### 1. 启动应用
运行对应工程的 `Application.java`。
### 2. 验证结果
#### 对于 `javafree-springboot-demo`
| 项目 | 地址 | 预期结果 |
| -------- | --------------------------------------- | -------------------------------------------------------- |
| 应用启动 | 控制台 | 输出 `Started MyApplication` |
| 系统登录 | `GET http://localhost:8090/` | 进入系统登录页,输入用户名密码可登录系统(admin/12345678) |
| API 文档 | `http://localhost:8090/swagger-ui.html` | 显示 Swagger UI |
| 日志输出 | 控制台 | 包含 INFO 级别日志 |
#### 对于 `javafree-springcloud-demo`
| 项目 | 地址 / 操作 | 预期结果 |
| ------------ | --------------------------------------- | ----------------------------------------- |
| Nacos 控制台 | `http://localhost:8080/nacos` | 在「服务列表」中看到 `javafree-cloud-web` |
| 应用日志 | 控制台 | 输出 `Registered service` 和 `Started` |
| API 文档 | `http://localhost:8090/swagger-ui.html` | 显示 Swagger UI |
------
## 核心功能模块
| 模块 | 功能 | 适用工程 |
| ----------- | --------------------------------------- | -------- |
| `auth` | JWT 认证、权限控制、登录拦截 | 两者 |
| `cache` | Redis + Caffeine 二级缓存 | 两者 |
| `accesslog` | 请求日志自动记录(JPA / Elasticsearch) | 两者 |
| `springdoc` | OpenAPI 3 文档生成 | 两者 |
| `common` | 统一响应、异常处理、工具类 | 两者 |
| `nacos` | 服务注册与发现 + 配置中心 | 微服务 |
| `openfeign` | 声明式 HTTP 客户端,服务间调用 | 微服务 |
| `sentinel` | 流量控制、熔断降级、系统保护 | 微服务 |
------
## 常见问题
| 问题 | 解决方案 |
| ------------------------------- | ------------------------------------------------------------ |
| 依赖下载失败 | 检查 `settings.xml` 是否正确配置私有仓库 |
| 启动报 `ClassNotFoundException` | 安装 Lombok 插件并启用注解处理 |
| Swagger 打不开 | 检查端口是否被占用,或 `springdoc.enabled` 是否为 `true` |
| 日志未输出 | 检查 `logging.level` 配置 |
| 服务未注册到 Nacos | 检查 `application.yml` 中 `nacos.discovery.server-addr` 配置 |
| 配置未生效 (微服务) | 检查 Nacos 中 `dataId` 和 `group` 是否匹配,配置内容是否正确 |
------
## 📚 下一步
- 查看 [JavaFreeCloud 完整文档](http://docs.javafree.cn/)
------
## ⚖️ 商业授权说明
**重要提示:自 2025年11月1日起,JavaFreeCloud Framework 已正式启用商业授权协议。** 本项目中的 `javafree-springboot-demo` 和 `javafree-springcloud-demo` 仅为技术演示工程,**不得在生产环境中直接使用**。
### 授权主体
本产品的版权所有者与授权方为 **JavaFree 软件工作室**。
### 授权模式
JavaFreeCloud 提供两种商业授权模式,您可根据企业需求选择:
| 功能项 | 源码授权版 | 非源码授权版 |
| --------------------------- | ---------- | -------------- |
| 获取前后端源代码 | ✅ 是 | ❌ 否 |
| 允许二次开发与修改 | ✅ 是 | ❌ 禁止反向工程 |
| 获取构建包(二进制) | ✅ 是 | ✅ 是 |
| 多生产环境部署 | ✅ 是 | ✅ 是 |
| 组织内分发 | ✅ 是 | ✅ 是 |
| 构建 SaaS/PaaS 平台对外提供 | ❌ 禁止 | ❌ 禁止 |
| 不得移除版权标识 | ✅ 必须保留 | ✅ 必须保留 |
#### 定价方案
**1. 源码授权 · 企业版(推荐)**
- **企业版年费**:¥9,999 元/年/项目
- **永久授权**:¥29,999 元/项目(含三年免费升级)
- **团队体验版**:¥2,999 元/年(限1项目 & 1生产环境)
> **优势**:获取完整源代码,支持深度定制、无缝集成与自主可控,适合有技术团队的企业构建核心业务系统。
**2. 非源码授权 · 二进制包**
- **企业版年费**:¥3,999 元/年/项目
- **永久授权**:¥9,999 元/项目(含三年免费升级)
- **团队体验版**:¥999 元/年(限1项目用于生产环境)
> **优势**:低成本快速上线,直接使用官方构建包。
### 使用规则
- **授权凭证**:正式授权客户将获得电子版《商业授权证书》及唯一授权码,需在系统中验证。
- 授权期限:
- **年费授权**:有效期1年,到期续费可继续使用新版本与技术支持。
- **永久授权**:一次性买断,永久使用当前及未来三年内的所有版本更新。
- **免责声明**:本软件按“原样”提供,不提供任何明示或暗示的担保。JavaFree 软件工作室不对因使用本产品而导致的数据丢失、业务中断或其他间接损失承担责任。
- **违规处理**:对于未经授权的使用、分发、破解或转售行为,JavaFree 软件工作室将依法追责,包括但不限于终止授权、要求赔偿损失和提起法律诉讼。
### 开源依赖声明
本产品集成以下开源项目,并严格遵循其原始许可证:
- Spring Boot / Spring Cloud Alibaba(Apache License 2.0)
- Nacos(Apache License 2.0)
- Vue.js / React(MIT License)
- element-plus(MIT License)
- tdesign-vue-next(MIT License)
### 联系我们
- 📧 **商务与授权咨询**:[gwz126@126.com](mailto:gwz126@126.com)
- 🌐 **官方网站**:[http://www.javafree.cn](http://www.javafree.cn/)
- 💬 **立即咨询**:[点击发送邮件](mailto:gwz126@126.com?subject=JavaFreeCloud 授权咨询)
**在您将 JavaFreeCloud 框架用于生产环境前,请务必联系官方获取正式授权。**