Grails 应用程序中的 Micronaut @ConfigurationProperties
Grails 应用程序可以使用许多 Micronaut 功能。了解如何通过 @ConfigurationProperties 将属性值绑定到结构化对象。
作者:Sergio del Amo、Puneet Behl
Grails 版本:6.0.0-RC1
1 培训
Grails 培训 - 由创建并积极维护 Grails 框架的人员开发并提供!
2 入门
在本指南中,我们将通过创建一个使用 Excel 文件下载书籍列表的应用程序来演示 Grails 文件传输功能。
2.1 您将需要
要完成本指南,您将需要以下内容
-
一些时间
-
一个不错的文本编辑器或 IDE
-
已安装 JDK 1.8 或更高版本,并且已正确配置了
JAVA_HOME
2.2 如何完成指南
要开始执行,请执行以下操作
-
下载并解压缩源代码
或
Grails 指南存储库包含两个文件夹
-
initial
初始项目。通常是一个带有附加代码的简单 Grails 应用程序,可让您抢先一步。 -
complete
一个完成的示例。这是通过执行指南介绍的步骤,并将这些更改应用于initial
文件夹的结果。
要完成指南,请转到 initial
文件夹
-
cd
到grails-guides/grails-configuration-properties-micronaut/initial
并按照下一部分中的说明进行操作。
如果你cd 进入grails-guides/grails-configuration-properties-micronaut/complete ,你可以直接转到完成的示例 |
3 编写应用程序
grails create-app example.grails.complete
3.1 配置属性
在本节中,我们将探讨如何通过@ConfigurationProperties
将属性值绑定到结构化对象。
确保在build.gradle
中包含micronaut-inject-groovy
依赖项。
compileOnly("io.micronaut:micronaut-inject-groovy")
创建一个名为 AddressConfiguration.groovy
的文件。
package example.grails
import io.micronaut.context.annotation.ConfigurationProperties
@ConfigurationProperties("address") (1)
class AddressConfiguration {
String street
String city
String country
}
1 | @ConfigurationProperties 注释获取配置前缀。 |
属性文件中定义的任何属性,如果其前缀为 address
且名称与其中一个属性相同,则会自动分配给此对象。
向 application.yml
添加一些属性
address:
street: 221B Baker Street
city: London
country: United Kingdom
3.2 标记库
创建一个 标记库 来呈现地址
package example.grails
import org.springframework.beans.factory.annotation.Autowired
class AddressTagLib {
static namespace = "app" (1)
@Autowired (2)
AddressConfiguration addressConfiguration (3)
def address = { attrs, body ->
out << """\
<div class='adr'>
<div class='street-address'>${addressConfiguration.street}</div>
<span class='locality'>${addressConfiguration.city}</span>,
<div class='country-name'>${addressConfiguration.country}</div>
</div>""" (4)
}
}
1 | 默认情况下,标记会添加到默认的 Grails 名称空间,并在 GSP 页面中使用g: 前缀。不过,可以通过向标记库类添加一个静态属性来指定其他名称空间。 |
2 | 要获取对 Micronaut Bean 的引用,你必须使用 Autowired 注释 |
3 | 使用其类型将 Micronaut Bean (AddressConfiguration ) 注入到标记库中。 |
4 | 创建一个有效的 adr 微格式 HTML 代码片段。 |
3.3 验收测试
编辑 grails-app/views/index.gsp
,当你访问主页 /
时当前呈现的 GSP,并添加以下代码段
...
<div id="content" role="main">
....
...
<app:address/>
</div>
...
现在,我们可以使用 Geb 创建一个验收测试,以验证地址是否已呈现到主页
package example.grails
import geb.spock.GebSpec
import grails.testing.mixin.integration.Integration
@Integration
class AddressSpec extends GebSpec {
def "verify address is displayed in homepage"() {
when:
browser.go("/")
then:
browser.driver.pageSource.contains('221B Baker Street')
}
}
4 测试应用程序
要运行测试
./grailsw
grails> test-app
grails> open test-report
或
./gradlew check
open build/reports/tests/index.html