Jboot v3.9.4 发布,可能是最完美的、针对数据字典、枚举解决方案

Jboot 一个更简单的分布式、微服务框架。

Jboot是一个基于 JFinal、JFinal-Undertow、Dubbo、Seata、Sentinel、ShardingSphere、Nacos 等开发的微服务框架,帮助开发者降低微服务、分布式开发门槛。爽爽开发,快乐生活。

到目前为止,Jboot 已经开源超过了 5 年的时间,迭代了 190+ 个版本,已经被超过 1000+ 公司在使用,其中包含了多个知名的上市公司。

Jboot v3.9.4 最大的功能,是正对 JFinal Enjoy 模板引擎的增强,完美的支持了 ”枚举“ 在模板引擎中的使用。这样带来的好处是在 html 模板引擎里,可以和 Java 毫无差别的使用枚举。

而枚举,在系统开发里,更多的是用来做 ”数据字典“,很多系统(比如 JbootAdmin)的数据字典是可以直接生成 ”枚举“ 代码的。

比如:”支付类型“ 的枚举如下:

public enum PayType {
   
    ALIPAY(1, "支付宝"),
    WECHAT(10, "微信支付"),    
    
    public int value;    
    public String text;

    PayType(int value, String text) {        
        this.value = value;        
        this.text = text;
    }   
    
    
    public static String text(Integer value) {        
        if (value != null) {            
            for (PayType type : values()) {                
                if (type.value == value) {                    
                    return type.text;
                }
            }
        }        
        return null;
    }    
    
    
    public static boolean isAlipay(Integer value) {        
        return value != null && ALIPAY.value == value;
    }

}

我们只需要给该枚举添加注解 @JFinalSharedEnum , 就可以在在 html 通过如下的方式使用该枚举了。

比如:

<html>
<body>

   #(PayType.ALIPAY.text)   <br/>
   #(PayType.text(1))   <br/>
   #(PayType.isAlipay(1))   <br/>
   
   #for(type : PayType.values())
       ---#(type.value)----#(type.text)--- <br/>
   #end
   
</body>
</html>

为什么说是对 JFinal 模板引擎的增强呢,因为 JFinal 模板引擎默认情况下,可以添加枚举,但是并不支持直接调用枚举里的静态方法

当 Jboot 添加枚举的静态方法支持后,最直接的好处是:我们可以把保存在数据库的 int 类型的枚举数据,在模板引擎里通过 #(PayType.text(1)) 这样显示出其 text 内容。

虽然一个很小的功能,却非常实用。虽然在 JFinal 社区也给出了不同的解决方法,但是没有一个解决方案与之媲美 。

在这个版本中,Jboot 还新增了对注解 @PostConstruct 注解的支持,优化了门户官网代码,详情请查看 changelist。

 

Jboot 开发文档:

https://jbootprojects.gitee.io/docs/

同时,Jboot 官方也推出了收费的企业级开发框架 JbootAdmin ,关于 JbootAdmin 详情咨询海哥。

 

maven 依赖:

<dependency>
    <groupId>io.jboot</groupId>
    <artifactId>jboot</artifactId>
    <version>3.9.4</version>
</dependency>

Hello World:

@RequestMapping("/")
public class HelloworldController extends JbootController {    

    public void index(){
        renderText("hello world");
    }    
    
    public static void main(String[] args){
        JbootApplication.run(args);
    }
}

 


评论区