Spring Boot CLI documentation说:
Spring Boot通过允许您指定没有组或版本的依赖项来扩展Groovy的标准@Grab支持,例如@Grab('freemarker')。这将参考Spring Boot的默认依赖关系元数据来推断工件的组和版本。
但是,当省略组和版本时,我的测试应用程序确实有效。
如果我使用@Grab('freemarker')
而不是@Grab('spring-boot-starter-freemarker')
,则应用程序会因Whitelabel错误而失败。文档错了吗?我使用的是最新的Spring Boot CLI 1.5.7。
.
├── app.groovy
├── static
│ └── index.html
└── templates
└── hello.ftl
这是项目结构。
@Controller
@Grab('spring-boot-starter-freemarker')
class MyApp {
@RequestMapping("/greet")
String home(Model model, @RequestParam String name) {
model.addAttribute("myname", name)
return "hello"
}
}
这是主要的Groovy应用程序文件app.groovy
。
<!DOCTYPE html>
<html>
<head>
<title>Home page</title>
<meta charset="UTF-8">
</head>
<body>
<form action="/greet">
<label>Enter your name:</label>
<input type="text" name="name">
<button type="submit">Submit</button>
</form>
</body>
</html>
这是index.html
主页,位于static
目录。
<!DOCTYPE html>
<html>
<head>
<title>Home page</title>
<meta charset="UTF-8">
</head>
<body>
<p>Hello ${myname}, today is a beautiful day!</p>
</body>
</html>
最后,这是Freemarker模板文件hello.ftl
,位于templates
目录中。该应用程序使用spring run app.groovy
运行。