English | 中文
Summer 是一个最小化的 AOP(面向切面编程)和 IoC(控制反转)内核工具库。它提供了一系列的验证器和相关工具类,用于简化对象和集合的验证逻辑,同时也包含了一些批量任务处理的功能。
-
丰富的验证规则:验证模块提供了广泛的验证规则,包括长度检查、正则表达式匹配和集合大小验证。例如,您可以轻松验证字符串的最小和最大长度,以及集合的大小范围。
-
基于注解的验证:支持基于注解的验证。您可以使用自定义注解标记类中的字段,并对对象执行验证操作。例如,使用 @NotNull 和 @Pattern 注解来验证用户定义的对象。
-
集合验证:为集合提供特定的验证功能。您可以为整个集合以及集合中的每个元素设置验证规则。
-
主任务和子任务管理:包括 MainTask 和 SubTask 等实体,以及相应的数据访问对象 (MainTaskDao)。它可以管理主任务和子任务的状态、进度和相关信息。
-
任务监控和恢复:TaskWatchdog 类会定期检查卡住的任务并尝试恢复它们,确保任务处理的可靠性。
确保您的开发环境中已经安装了 Java 和 Maven。
克隆该仓库到本地:
git clone https://github.com/dianpoint/summer.git
进入项目目录并构建项目:
cd summer
mvn clean install通过 XML 文件定义 Bean,并使用 XmlBeanDefinitionReader 加载并注册:
AbstractBeanFactory beanFactory = new DefaultListableBeanFactory();
Resource resource = new ClassPathResource("beans.xml");
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(beanFactory);
reader.loadBeanDefinitions(resource);
Object bean = beanFactory.getBean("beanName");通过 ProxyFactoryBean 为目标对象创建代理,并在方法执行前后织入通知:
ProxyFactoryBean proxyFactoryBean = new ProxyFactoryBean();
proxyFactoryBean.setTarget(target);
proxyFactoryBean.setInterceptorName("interceptorBeanName");
proxyFactoryBean.setBeanFactory(beanFactory);
Object proxy = proxyFactoryBean.getSingletonInstance();使用 ValidationRules 与 Validators 对集合与对象进行校验:
ValidationRule<Collection<?>> rule = ValidationRules.minsize(5);
ValidationResult result = rule.validate(collection);
User user = new User(null, "123@mail.com");
List<ValidationResult> results = Validators.annotated(User.class).validate(user);@RequestMapping("/hello")
public String hello() { return "Hello, World!"; }@Autowired
private AnotherService anotherService;- 实现基础的 Bean 定义与注入
- 添加 AOP 支持
- 丰富校验模块规则
- 支持基于注解的配置
- 实现 @Autowired 注解(按名称字段注入)
- 实现 @Component 扫描
有关建议功能和已知问题的完整列表,请参考issues
开源社区因贡献而精彩,任何形式的贡献都将被郑重感谢。
- Fork 本仓库
- 创建特性分支(
git checkout -b feature/AmazingFeature) - 提交改动(
git commit -m 'Add some AmazingFeature') - 推送到分支(
git push origin feature/AmazingFeature) - 发起 Pull Request
Summer 基于Apache License 2.0许可证。查看License.txt获取更多信息。
- Email: congccoder@gmail.com
- Github: https://github.com/ccoderJava