我服务上的2个简单字符串属性:
class MyService {
static transactional = false
def uri1
def uri2
}
resources.groovy:
beans = {
myService(com.myapp.MyService) {
uri1 = 'http://my.endpoint1.com'
uri2 = 'http://my.endpoint2.com'
}
}
并且..两个属性都保持为null。看起来简单而且显而易见,但很少继续下去,我似乎明确地遵循了文档和我发现的一些帖子。任何想法?感谢。
我尝试将属性键入为String,def,static String ..没有任何帮助。 我尝试过使用bean - >在属性闭包和bean.str1等...没有任何帮助。
更新 目标只是通过Spring在Service类上设置这些字符串属性。是的,使用Config.groovy是一个选项,但这需要一个额外的步骤来访问配置..在这种情况下,我发现这是一个不必要的环节。毕竟,Spring正在使用,所以为什么不使用它。在我的例子中,它们恰好是URI(更新的示例代码)。
参见:http://grails.org/doc/1.0.x/guide/14.%20Grails%20and%20Spring.html 14.3,例如。
在dataSource注册上设置driverClassName = "org.hsqldb.jdbcDriver"
的位置。我尝试将java样式的setter和getter添加到Service类,仍为null
答案 0 :(得分:2)
你不会疯了,这应该完全按照你的想法运作。
我准备了一个示例项目,以便在github上确认这一点:
https://github.com/gid79/so-q8548146-spring-dsl
我用grails 1.3.4编写了这个例子,这恰好是我在本地安装的版本,自从我使用它以来已经有一段时间了。
您可能偶然发现了正在使用的版本中的错误,您的引用是1.0.x文档,您使用的是哪个版本?
答案 1 :(得分:0)
我不了解总体目标。
resources.groovy可用于定义bean。 MyService因为会被grails自动“注入”,所以你可以通过以下方式访问它:
def myService
然后你可以在myService上调用方法,通常在你的控制器中。
如果您正在尝试定义“应用程序设置”,那么Config.groovy就是我理解应该去的地方:
icooeee {
defaultCategory = "lifestyle"
}
并在grails控制器,服务等中阅读:
ConfigurationHolder.config.icooeee.defaultCategory
如果你想在插件或库中初始化一个bean-java对象,它定义为src / java。然后构造函数参数是有意义的,根据您正在讨论的grails文档:http://grails.org/doc/1.0.x/guide/14.%20Grails%20and%20Spring.html
MVC /域驱动设计确实说grails域对象应该维护与数据相关的数据和逻辑。因此,在维护与服务相关的状态时要考虑这一点。
我已经在resources.groovy中为apache-camel成功配置了bean。请注意,这些是初始化基础apache camel对象,而不是通常“免费”提供的grails对象:
case "development":
jmsConnectionFactoryLocal(org.apache.activemq.ActiveMQConnectionFactory) {
brokerURL = 'vm://localhost'
}
_jmsConnectionFactory(ActiveMQConnectionFactory) {
brokerURL = ConfigurationHolder.config.caller.activemqServer
}
jmsConnectionFactory(org.apache.activemq.pool.PooledConnectionFactory) {
connectionFactory = ref('_jmsConnectionFactory')
}
jmsConfig(org.apache.camel.component.jms.JmsConfiguration) {
connectionFactory = ref('_jmsConnectionFactory')
transacted = true
concurrentConsumers = 10
}
activemqServer(org.apache.activemq.camel.component.ActiveMQComponent) {
configuration = ref('jmsConfig')
}
break