要重现此问题,请使用以下步骤。
- 创建一个新的 Grails 应用程序。
- 创建一个名为 FooController 的新控制器
- 向 FooController 添加一个动作“栏”
- 在 src/groovy 中,创建一个名为 Bar 的新类
在 resources.groovy 中配置一个名为 bar 的 SpringBean
bar(Bar) {bean -> bean.autowire = 'byName' }
- 启动应用程序并导航到 http:localhost:8080/[appContext]/foo/bar
- 你应该得到一个类似于这样的堆栈跟踪:
java.lang.ClassCastException: Bar cannot be cast to groovy.lang.Closure
at org.grails.plugin.resource.DevModeSanityFilter.doFilter(DevModeSanityFilter.groovy:44)
at java.lang.Thread.run(Thread.java:680)'
为什么会出现这种情况?它是 Grails 中的错误还是预期的行为?
我希望配置的 SpringBeans 和操作名称之间不应该有名称冲突。