hi-nginx-java既可以通过实现hi.servlet抽象来像Flask那样快速配置路由,例如:
1 hi.route r =hi.route.get_instance();2 r.get("^/(hello|test)/?$", this::do_hello);
也能绕过hi.servlet抽象实现无配置路由配置,即通过实现hi.route.run_t抽象直奔业务逻辑而去,例如:
1 packagehi;2
3 importhi.request;4 importhi.response;5 importhi.route;6 importjava.util.regex.Matcher;7
8 public class helloworld implementshi.route.run_t {9 publichelloworld() {10 }11
12 public voidhandler(hi.request req, hi.response res, Matcher m) {13 res.set_content_type("text/plain;charset=utf-8");14 res.content = "hello,worldn";15 res.status = 200;16 }17 }
要调用hi.helloworld类,只需在hi-nginx中配置hi-nginx-java自带的默认控制器hi.controller即可:
location ~ .java {
rewrite ^/(.*).java$ /$1 break;
hi_java_servlet hi/controller;
}
如此,访问http://localhost/hi/helloworld.java即可获得相应服务。
所以,hi-nginx-java业已实现一种URI和class之间的映射关系。如果URI是/a/b/c.java,那么相应的服务类就是a.b.c。这一切完全是自动完成的,无需任何配置。至于.java的后缀,则可任君选取,无任何限制。
另外,hi-nginx-java通过LRU+过期时间的混合算法更新URI和class之间的映射关系,默认过期时间是300秒。也就是,如果你更新了业务实现,无需做任何事,300秒后,服务器将自动更新相关业务逻辑,从而无需通过restart或者reload重启hi-nginx服务器。当然,如果着急看更新后的结果,即可通过restart或者reload重启hi-nginx服务器,也可通过配置较短的过期时间来达到目的。
内容来源于网络如有侵权请私信删除