Grails(2)Clinic Sample and Guide Book

本文介绍了如何使用Grails构建宠物诊所应用,包括项目导入、配置、运行示例和关键组件概述。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Grails(2)Clinic Sample and Guide Book
Find the most recent sample from here:
https://github.com/grails-samples/grails-petclinic.git

>git clone https://github.com/grails-samples/grails-petclinic.git

Import the project into my STS, install the latest grails on MAC
>sudo port install grails

Follow the document and run the sample first
>grailsw run-app

Then I can visit the sample web page from this URL http://localhost:8080/petclinic.

I can also use my STS web container to run this web project. It is also working. I will go this project in details.

1. PetClinic Application Overview
It is built on already established Java technology like Spring & Hibernate.
Object Relational Mapping(ORM) on Hibernate
View technology called Groovy Server Pages(GSP)
Spring MVC and etc

H2 is the default database used by Grails.

PetClinic Application Design
Logging
http://grails.org/doc/latest/guide/conf.html#logging
grails-app/Config.groovy

Business Layer
org.grails.samples.Speciality
org.grails.samples.PetType
org.grails.samples.Person
org.grails.samples.Vet
org.grails.samples.Owner
org.grails.samples.Pet
org.grails.samples.Visit

Logical Views & Implemented Use Cases
grails-app/views/clinic/index.gsp home
grails-app/views/clinic/vets.gsp vets and specialties
grails-app/views/owner/find.gsp
grails-app/views/owner/selection.gsp select the users from the same last name
grails-app/views/owner/show.gsp
grails-app/views/owner/add.gsp
grails-app/views/pet/add.gsp
grails-app/views/pet/addVisit.gsp
grails-app/views/common/_formField.gsp A template used to render common markup
grails-app/views/layouts/main.gsp The layout used to include common CSS and markup

Testing test the controller layer.

During reading the sample, here is for looking up http://grails.org/doc/latest/guide/index.html.

Make a sample project Dude Money Master

2. Getting Started
I successfully installed grails on my MAC and used the IDE STS.
>grails run-app
>grails test-app
>grails war

4. Configuration
4.1 Basic Configuration
grails-app/conf/BuildConfig.groovy
grails-app/conf/Config.groovy

The syntax is coming from the Grails-ConfigSlurper http://sillycat.iteye.com/blog/1567542.

The configuration has some benefits:
1. Can be merged
2. Can be written to disk
3. Convert to java properties, convert from java properties
4. the content can be structured
5. Can select the environment
def config = new ConfigSlurper("development").parse(new File('Sample.groovy').toURL())
config =newConfigSlurper("test").parse(newFile('Sample.groovy').toURL())

BuildConfig.groovy is used for compile, doc and etc.
Config.groovy is for settings that are used when the application is running.

So the Config.groovy is packaged in war, BuildConfig.groovy is not.
foo.bar.hello = "world"
It is import to have the quotes. The property values can be any valid Groovy type, strings, integers, or arbitrary objects.

Some implicit variables can not be used:
userHome home directory for the account that is running the grails
grailsHome
appName application name as it appears in application.properties
appVersion version in application.properties

BuildConfig.groovy is only available from command script via grailsSettings.config

Config.groovy is via grailsApplication in controllers
def recipient = grailsApplication.config.foo.bar.hello

And it can be easily injected into services.
class MyService{
def grailsApplication
String greeting(){
def recipient = grailsApplication.config.foo.bar.hello
…snip...
}
}

4.1.1 Built in options
Runtime Settings
grails.config.location The location of properties files can be set to other class path or userHome place.
http://grails.org/doc/latest/guide/single.html#configExternalized

grails.war.dependencies Manage the jars in war.

4.1.2 Logging
The Basics
log4j setting in Config.groovy

Logging Levels
1. off
2. fatal
3. error
4. warn
5. info
6. debug
7. trace
8. all

Loggers
class MyClass {
private static final log = LogFactory.getLog(this)
…snip…
}

The Root Logger
log4j = {
appenders {
file name: 'file', file:'/var/logs/mylog.log'
}
root{
debug 'stdout', 'file'
}
}

The root logger will log to 2 appenders. The default 'stdout' (console) apppender and file appender.

These are the default available appenders.
jdbc JDBCAppender
console ConsoleAppender
file FileAppender
rollingFile RollingFileAppender

Environment-specific configuration
// other shared config
info "grails.app.controller"
environments {
production {
// Override previous setting for 'grails.app.controller'
error "grails.app.controllers"
}
}

4.1.3 GORM
grails.gorm.failOnError=true
grails.gorm.autoFlush=true

4.2 Environments
Per Environment Configuration
dataSource {
pooled = false
driverClassName = "org.h2.Driver"
username = "sa"
password = ""
}
environments {
development {
dataSource {
dbCreate = "create-drop"
url = "jdbc:h2:mem:devDb"
}
}
test {
dataSource {
dbCreate = "update"
url = "jdbc:h2:mem:testDb"
}
}
production {
dataSource {
dbCreate = "update"
url = "jdbc:h2:prodDb"
}
}
}Packaging and Running for Different Environments
>grails [envrionment] [command name]


references:
http://sillycat.iteye.com/blog/1567542
http://sillycat.iteye.com/blog/1074642
http://www.grails.org/tutorials?offset=0&max=10
https://github.com/grails-samples
http://grails.org/doc/latest/guide/index.html
http://grails.org/doc/latest/guide/conf.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值