README.md 6.2 KB

SMF Core

1. 项目描述

SMF Core 是一个基于Java开发的企业级核心服务框架,为各类Java应用提供坚实的基础设施支持。该框架专注于提供高度可复用的数据访问、对象映射、多语言国际化等核心功能模块,旨在简化企业应用开发流程,提高开发效率和代码质量。

核心功能特性:

  • 基于MongoDB的数据访问抽象层,提供通用CRUD操作和高级查询支持
  • 灵活的对象映射框架,简化DTO与Entity之间的转换
  • 完整的多语言国际化支持,内置6种语言资源
  • 统一的异常处理和日志记录机制
  • 模块化设计,支持按需集成和扩展

2. 安装说明

2.1 环境要求

  • JDK 1.8或更高版本
  • Maven 3.6或更高版本
  • MongoDB 4.0或更高版本
  • Spring Boot环境

2.2 项目构建

# 克隆项目(假设示例)
git clone https://example.com/smf-core.git
cd smf-core

# 使用Maven包装器构建项目(Linux/Mac)
./mvnw clean package

# 使用Maven包装器构建项目(Windows)
mvnw.cmd clean package

# 或使用本地已安装的Maven
mvn clean package

2.3 集成到现有项目

在您的项目的pom.xml文件中添加SMF Core依赖:

<dependency>
    <groupId>com.neotel.smfcore</groupId>
    <artifactId>smf-core</artifactId>
    <version>1.0.0</version> <!-- 使用实际版本号 -->
</dependency>

3. 使用示例

3.1 对象映射(BaseMapper)

// 创建映射器实例
TestMapper mapper = new TestMapperImpl();

// DTO转换为Entity
TestDto dto = new TestDto();
dto.setId("user-123");
dto.setName("张三");
dto.setValue(95);

TestEntity entity = mapper.toEntity(dto);

// Entity转换为DTO
TestDto resultDto = mapper.toDto(entity);

// 批量转换
List<TestDto> dtoList = Arrays.asList(dto1, dto2);
List<TestEntity> entityList = mapper.toEntity(dtoList);

3.2 数据访问(AbstractBaseDao)

// 使用自动注入的DAO
@Autowired
private UserDao userDao;

// 创建并保存实体
UserEntity user = new UserEntity();
user.setId("user-001");
user.setUsername("admin");
userDao.save(user);

// 按ID查询
UserEntity foundUser = userDao.findById("user-001");

// 条件查询
Query query = new Query(Criteria.where("username").is("admin"));
List<UserEntity> users = userDao.findByQuery(query);

// 分页查询
Pageable pageable = PageRequest.of(0, 10); // 第1页,每页10条
List<UserEntity> pagedUsers = userDao.findByQuery(query, pageable);

3.3 国际化功能

// 注入消息源
@Autowired
private MessageSource messageSource;

// 获取当前语言环境的消息
String welcomeMessage = messageSource.getMessage(
    "welcome.message",
    new Object[]{user.getUsername()}, 
    LocaleContextHolder.getLocale()
);

// 获取指定语言环境的消息
String chineseMessage = messageSource.getMessage(
    "error.not.found", 
    new Object[]{"用户"},
    Locale.SIMPLIFIED_CHINESE
);

4. 配置选项

4.1 核心配置文件

smfcore.json - 框架核心配置:

{
  "database": {
    "mongo": {
      "uri": "mongodb://localhost:27017/smf-core",
      "connections": 10,
      "maxWaitTime": 10000
    }
  },
  "service": {
    "port": 8080,
    "contextPath": "/smf-core"
  },
  "logging": {
    "level": "INFO",
    "file": "./logs/smf-core.log"
  },
  "i18n": {
    "defaultLocale": "zh_CN",
    "supportedLocales": ["zh_CN", "zh_TW", "en_US", "de_DE", "fr_FR", "ja_JP"]
  }
}

4.2 日志配置

通过log4j2-spring.xml配置日志行为:

  • 日志输出格式和级别
  • 日志文件路径和轮转策略
  • 控制台和文件输出配置

4.3 国际化配置

  • 在resources目录下创建messages_*.properties文件
  • 支持的语言:zh_CN, zh_TW, en_US, de_DE, fr_FR, ja_JP
  • 通过i18n.defaultLocale设置默认语言

5. 测试说明

5.1 运行单元测试

# 运行所有测试
./mvnw test

# 运行特定测试类
./mvnw test -Dtest=BaseMapperTest

# 运行特定测试方法
./mvnw test -Dtest=BaseMapperTest#testDtoToEntityConversion

5.2 测试覆盖率报告

# 生成测试覆盖率报告
./mvnw jacoco:report

测试覆盖率报告将生成在target/site/jacoco/index.html

5.3 主要测试组件

  • BaseMapperTest: 测试对象映射功能
  • AbstractBaseDaoTest: 测试数据访问层功能
  • 国际化测试: 验证多语言支持功能

6. 贡献指南

我们欢迎社区贡献来改进SMF Core框架。在参与贡献前,请阅读以下指南:

6.1 代码提交规范

  1. 提交消息格式: 使用清晰简洁的提交消息,遵循以下格式: ``` [类型]: 简短描述

详细描述(可选)

   类型包括:feat(功能)、fix(修复)、docs(文档)、style(格式)、refactor(重构)、test(测试)

2. **代码风格**: 遵循项目现有的代码风格和约定
3. **单元测试**: 为新功能或修改添加适当的单元测试

### 6.2 贡献流程

1. Fork项目仓库到您的GitHub账户
2. 创建功能分支(feature/your-feature-name)或修复分支(fix/issue-number)
3. 在您的分支上进行开发和测试
4. 提交Pull Request,详细描述您的更改
5. 项目维护者将审核您的贡献并合并(如有必要,可能会要求您进行调整)

## 7. 许可信息

**SMF Core** 是一个专有软件项目,受版权保护。

© 2023 SMF Core Team. 保留所有权利。

未经版权所有者明确书面许可,不得以任何形式或通过任何方式使用、复制、修改、分发或传播本软件。

详细许可条款请参阅项目根目录下的**LICENSE**文件。

## 8. 联系/支持信息

### 8.1 获取支持

- **技术支持**: 发送邮件至 support@smf-core.com
- **问题报告**: 在项目的Issue跟踪系统中提交问题(如适用)
- **文档**: 请参考项目docs目录下的文档文件

### 8.2 项目维护团队

- 项目负责人:[项目负责人姓名]
- 技术架构师:[架构师姓名]
- 开发团队:[团队名称]

### 8.3 商务合作

如需商务合作或定制化需求,请联系:
- 邮箱:business@neotel.tech
- 电话:+86-13651614238

---

*最后更新时间:2024年*

---

**注意**: 本文档中的示例代码和配置仅供参考,实际使用时请根据您的具体环境和需求进行调整。