`
shion
  • 浏览: 22612 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Grails的services开发

 
阅读更多

1.普通service的开发

新建一个service


弹出的输入框中可以输入包名+类名,注意IDE会自动给类名后边加上Service,例如:输入com.xx.Abc,生成的service命名就是com.xx.AbcService。也可以输入Domain的类命名(可用Alt + /提示),生成的类名为domain的类名加service

 

生成两个文件,一个是测试类,一个是服务类。


在生成的测试类里写些测试代码

 

@TestFor(TestService)
class TestServiceTests {

	void testSomething() {
		assert 1==service.serviceMethod(null)
	}
}

 

 这里需要注意的是,由于TestFor的annotation的缘故,内置的service变量被自动注入了TestService的实例。不需要手工实例化TestService了。(为啥生成的服务方法叫serviceMethod,生成的测试方法不叫testServiceMethod捏?)

 

实现一下serviceMethod

 

class TestService {

    def serviceMethod(String input) {
		log.info('I\'m service')
		return 1
    }
}

 

 这里的log是commons-log的log,已经被自动注入,不需要显示声明。

 

修改一下Config.groovy里的log4j配置

 

log4j = {
	// Example of changing the log pattern for the default console
	// appender:
	//
	appenders {
		console name:'stdout', layout:pattern(conversionPattern: '%c{2} %m%n')
	}

	info 'grails.app.services'

	error  'org.codehaus.groovy.grails.web.servlet',  //  controllers
			'org.codehaus.groovy.grails.web.pages', //  GSP
			'org.codehaus.groovy.grails.web.sitemesh', //  layouts
			'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping
			'org.codehaus.groovy.grails.web.mapping', // URL mapping
			'org.codehaus.groovy.grails.commons', // core / classloading
			'org.codehaus.groovy.grails.plugins', // plugins
			'org.codehaus.groovy.grails.orm.hibernate', // hibernate integration
			'org.springframework',
			'org.hibernate',
			'net.sf.ehcache.hibernate'

	root{
		warn 'stdout'
	}
}

 

 

root的配置是不想后台输出太多日志,这里主要配置文中标红的那句。注意的是grails.app.services是默认的,这样配才能控制service的日志输出,而不是写的包名。

 

运行一下测试


test-app是运行整个程序的测试,可以使用test-app 类全名,来指定运行单个测试类。这里不详细说了。

 

运行后会打很多日志,其中一行就是

test.TestService I'm service

 

2.service之间的依赖和spring的ioc

grails默认加入了spring的Ioc,使我们可以轻松的使用。

依照1的方法再建一个service。测试代码忽略。

实现代码如下:

class AnotherService {

    def serviceMethod() {
		log.info("I'm from another Service")
    }
}

 很简单

 

在原service上加上引用

class TestService {
	
	def anotherService

    def serviceMethod(String input) {
		anotherService.serviceMethod()
		log.info('I\'m service')
		return 1
    }
}

 在service的test里使用spring ioc需要做点工作,测试代码如下:

@TestFor(TestService)
class TestServiceTests {

	void testSomething() {
		
		defineBeans {
			anotherService(AnotherService)
		}
		
		assert 1==service.serviceMethod(null)
	}
}

 defineBeans也是内置的,不需要引用。

 

跑一下test-app,结果:

test.AnotherService I'm from another Service

test.TestService I'm service

 

3.引用JAVA service

原有的遗留程序,或者某些groovy无法做的工作可以将由java完成。既然groovy和java是亲戚,那就应该能无缝调用。

在src/java里建一个java类,代码如下:

public class JavaTestService {
	Logger log = Logger.getLogger(JavaTestService.class);
	
	public void javaTestMethod(){
		log.info("I'm from java");
	}

}

 这里Log用的是log4j

 

修改一下测试代码:

@TestFor(TestService)
class TestServiceTests {

	void testSomething() {
		
		defineBeans {
			anotherService(AnotherService)
			javaTestService(test.JavaTestService)
		}
		
		assert 1==service.serviceMethod(null)
	}
}

 修改一下TestService

class TestService {
	
	def anotherService
	def javaTestService

    def serviceMethod(String input) {
		anotherService.serviceMethod()
		javaTestService.javaTestMethod()
		log.info('I\'m service')
		return 1
    }
}

 

这里两个引用都使用了def定义,不指定类型,当然也可以使用类型声明,不过这样会在调试web的时候产生一点问题,而且写def的话可以不依赖于相关类。另外,当然也可以让java的类实现一个接口来实现注入。spring ioc这里是按名称注入的,不支持类型注入。

 

log4j的配置中也需要改一下:

 

info 'grails.app.services','test'

 

因为java的service并非grails的service,grails.app.services无法控制他,所以把java类的包名加上。

 

跑一下测试,结果:

test.AnotherService I'm from another Service

test.JavaTestService I'm from java

test.TestService I'm service

  • 大小: 42.3 KB
  • 大小: 14.6 KB
  • 大小: 7.8 KB
分享到:
评论

相关推荐

    grails开发

    Grails是一种基于Java平台的开源Web应用框架,它利用Groovy语言的强大特性和简洁语法,为开发者提供了一种高效、灵活的开发环境。本篇文章将深入探讨Grails开发的基础知识,帮助初学者快速掌握Grails的精髓。 1. **...

    Grails从零开始开发项目二

    在Grails项目中,Groovy源代码通常包含控制器(Controllers)、服务(Services)、领域类(Domain Classes)、过滤器(Filters)等核心组件。控制器负责处理HTTP请求,服务提供业务逻辑,领域类定义数据模型,过滤器...

    Grails开发的通讯录

    《Grails开发的通讯录详解》 在信息技术领域,开发高效、便捷的通讯录系统是一项常见的任务。本文将深入探讨采用Grails on Groovy技术构建的通讯录系统,旨在为开发者提供一个全面的理解和实践指南。 Grails是一个...

    grails-2.4.4.zip

    总结,Grails 2.4.4 作为一个成熟的Web开发框架,以其高效的开发模式、强大的Groovy语言支持、丰富的插件库和易于集成的特点,为开发者提供了构建高质量Web应用的优秀选择。通过深入理解其核心组件和最佳实践,...

    Grails 开发手册1

    《Grails开发手册》是对Grails这一基于Groovy语言的Web应用框架的详细介绍。Grails遵循“约定优于配置”的原则,简化了开发流程,整合了Spring MVC和Hibernate等流行技术,使得开发者无需手动编写数据访问层即可实现...

    Grails中文参考手册

    Grails 是一个基于 Groovy 语言的开源 web 应用程序框架,它构建在 Java 平台上,旨在提高开发效率,简化常见 Web 开发任务。Grails 遵循 Model-View-Controller (MVC) 架构模式,允许开发者快速构建动态、数据驱动...

    eclipse插件grails(groovy)

    Eclipse 插件 Grails(Groovy)是一个强大的开发工具,它使得在Eclipse环境中进行Groovy和Grails应用的开发变得更为便捷。Groovy是一种动态、面向对象的编程语言,而Grails则是一个基于Groovy的开源Web应用框架,...

    Grails 入门指南+示例源码

    Grails是一个基于Groovy语言的全栈式、开源的Web应用框架,它以简化开发流程和提高生产力为目标,特别适合快速构建Web应用。 在本书中,你将学习到以下关键知识点: 1. **Grails概述**:了解Grails的背景、设计...

    the definitive guide to grails 2

    Grails框架基于Groovy语言,是一种高度动态、敏捷的Java应用开发框架,它简化了Web应用程序的构建过程,同时保持了Java平台的强大功能和稳定性。 ### Grails框架简介 Grails框架是建立在Groovy编程语言之上的一个...

    grails-core源码

    本文将深入探讨Grails的核心源码,特别是版本2.2.2,帮助对Grails感兴趣的朋友们理解其内部工作机制,提升开发技能。 一、项目结构 在解压后的`grails-core-master`目录中,我们可以看到Grails的核心模块组织结构...

    Grails-Java开发人员的圣杯.pptx

    Grails是一种基于Java平台的开源Web应用框架,它被设计成对Java开发人员来说如同圣杯一般的存在,因为它旨在减少繁琐的配置工作,让开发者能够更加专注于业务逻辑的实现。Grails借鉴了Groovy语言的特性,Groovy是一...

    grails app

    在IT行业中,Grails是一个基于Groovy语言的开源Web应用框架,它利用了Java平台的优势,提供了一种高效、简洁的开发方式。本压缩包文件“grails app”包含了一步步搭建Grails应用的源代码,虽然缺失了图片说明,但...

    基于grails开发的财政项目

    1. `grails-app`: 存放Grails应用的核心组件,如controllers、domains、services、views等。 2. `conf`: 配置文件夹,包含应用的配置信息,如`application.yml`。 3. `src/main/groovy`: 存放自定义的Groovy类。 4. ...

    grails-1.3.0.RC2

    4. **Services**:Grails 服务层用于实现业务逻辑,可以被多个控制器共享。它们是单例的,支持事务管理,可方便地与数据库交互。 5. **Plugins**:Grails 插件系统是其强大之处,允许开发者复用和扩展功能。1.3.0....

    第一个grails程序

    5. **grails-app/services**:服务层文件夹,存放业务逻辑代码,可被多个控制器复用。 6. **grails-app/views**:视图文件夹,包含GSP(Groovy Server Pages)文件,用于呈现HTML输出。 7. **grails-app/conf**:...

    Grails-2.4.4-用户手册

    Grails 是一个基于 Groovy 语言的开源全栈式Web应用框架,它旨在提高开发效率,提供简洁、灵活的代码结构,以及强大的自动化工具。Grails 2.4.4 是该框架的一个稳定版本,具有以下特性: 1. **Groovy 语言支持**:...

    The definitive guide to grails 2 英文版 书 代码

    这本书结合了理论与实践,不仅介绍了Grails的基本概念,还涵盖了高级主题,帮助读者从初学者到熟练掌握Grails开发。 Grails是一个基于Groovy语言的开源Web应用框架,它构建在Java平台上,利用了Spring、Hibernate等...

    Grails 工具文档

    Grails是一种基于Java平台的开源Web应用框架,它采用了Groovy语言,使得开发过程更加简洁高效。Grails的核心设计理念是“Convention over Configuration”(约定优于配置),这大大减少了开发者在项目设置上的工作量...

Global site tag (gtag.js) - Google Analytics