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 代码提交规范
- 提交消息格式: 使用清晰简洁的提交消息,遵循以下格式: ``` [类型]: 简短描述
详细描述(可选)
类型包括: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年*
---
**注意**: 本文档中的示例代码和配置仅供参考,实际使用时请根据您的具体环境和需求进行调整。