Groovy 使 Spring 更出色,第 2 部分: 在运行时改变应用程序的行为
2009-11-19 00:00:00 来源:WEB开发网清单 2 显示了 pdfGenerator bean,它被配置了 10 秒(10,000 毫秒)的刷新检查延迟。添加 refresh-check-delay,之后,Spring 配置这个 bean,使之在底层 GroovyPdfGenerator.groovy 脚本文件改变时自动刷新。
清单 2. 将 refresh-check-delay 添加到脚本化的 bean 定义中
<lang:groovy id="pdfGenerator"
script-source="classpath:groovierspring/GroovyPdfGenerator.groovy"
refresh-check-delay="10000">
<lang:property name="companyName" value="Refreshable Groovy Bookstore"/>
</lang:groovy>
现在,如果在应用程序正在运行时对 GroovyPdfGenerator.groovy 脚本做出更改,Spring 将检测到这一更改,并在运行时重新装载 pdfGenerator bean,而不必重新启动。注意,只有达到规定的延迟时间,并且 可刷新 bean 上发生方法调用,才会发生刷新检查。例如,假设 pdfGenerator bean 的刷新检查延时为 10 秒,但是连续 50 秒内没有发生方法调用。在这种情况下,Spring 会在 50 秒之后(而不是每过 10 秒)检查是否需要刷新。换句话说,Spring 不会积极地轮询脚本的更改;相反,它判断自上次方法调用后经过的时间,然后计算这段时间是否超过刷新检查延时。只有当经过的时间超过刷新检查延时,Spring 才检查脚本是否被更改,进而确定是否需要刷新。另一方面,假设 pdfGenerator bean 处于较重的负载下,每一秒钟它的方法被多次调用。如果 refresh-check-delay 为 10 秒,无论这个 bean 被使用多少次,它最快只能每 10 秒重新装载一次。所以,不需要担心 Spring 是否会因为积极地轮询 Groovy 脚本而消耗系统资源,它并没有这样做。
更多精彩
赞助商链接