有许多 Java REST 框架,但我最熟悉 Jersey,所以这里有一个 Groovy 脚本,它为属性文件提供了简单的读取功能。
@Grapes([
@Grab(group='org.glassfish.jersey.containers', module='jersey-container-grizzly2-http', version='2.0'),
@Grab(group='org.glassfish.jersey.core', module='jersey-server', version='2.0'),
@Grab(group='org.glassfish.jersey.media', module='jersey-media-json-jackson', version='2.0')
])
import org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory
import org.glassfish.jersey.jackson.JacksonFeature
import javax.ws.rs.GET
import javax.ws.rs.Path
import javax.ws.rs.Produces
@Path("properties")
class PropertiesResource {
@GET
@Produces("application/json")
Properties get() {
new File("test.properties").withReader { Reader reader ->
Properties p = new Properties()
p.load(reader)
return p
}
}
}
def rc = new org.glassfish.jersey.server.ResourceConfig(PropertiesResource, JacksonFeature);
GrizzlyHttpServerFactory.createHttpServer('http://localhost:8080/'.toURI(), rc).start()
System.console().readLine("Press any key to exit...")
不幸的是,由于 Jersey 使用 3.1 版本的asm
库,因此与 Groovy 的 4.0 版本存在冲突,asm
除非您使用groovy-all
可嵌入的 jar 运行脚本(仅调用groovy
命令行并传递脚本将无法工作)。我还必须提供 Apache Ivy 依赖项。(希望 Groovy 团队将在下一个版本中解决这些问题——asm
尤其是过去曾让我感到悲伤的问题。)所以你可以这样称呼它(提供类路径 jar 的完整路径):
java -cp ivy-2.2.0.jar:groovy-all-2.1.6.jar groovy.lang.GroovyShell restProperties.groovy
您所要做的就是创建一个名为 的属性文件test.properties
,然后将上述脚本复制到一个名为 的文件restProperties.groovy
中,然后通过上述命令行运行。然后您可以在 Unix 中运行以下命令来尝试一下。
curl http://localhost:8080/properties
它将返回您的属性文件的 JSON 映射。