要使用groovy,首先用maven下载groovy的包,pom.xml文件中添加:

<dependency>
<groupid>org.codehaus.groovy</groupid>
<artifactid>groovy-all</artifactid>
<version>2.1.8</version>
</dependency>
下面使用xml,java annotation,groovy dsl实现相同功能的不同配置方式比较

<jdbc:embedded-database id="datasource" type="h2">
</jdbc:embedded-database>
<bean
class="org.springframework.orm.jpa.localcontainerentitymanagerfactorybean"
id="entitymanagerfactory">
<property name="persistenceunitname" value="persistenceunit" />
<property name="datasource" ref="datasource" />
<property name="persistenceproviderclass" value="org.hibernate.ejb.hibernatepersistence"></property>
<property name="packagestoscan">
<array>
<value>com.hantsylabs.example.spring.model</value>
</array>
</property>
<property name="jpaproperties">
<value>
hibernate.format_sql=true
hibernate.show_sql=true
hibernate.hbm2ddl.auto=create
</value>
</bean>
<bean class="org.springframework.orm.jpa.jpatransactionmanager"
id="transactionmanager">
<property name="entitymanagerfactory" ref="entitymanagerfactory" />

@configuration
@componentscan(basepackages = { "com.hantsylabs.example.spring.dao","com.hantsylabs.example.spring.jpa" })
@enabletransactionmanagement(mode=advicemode.aspectj)
public class jpaconfig {
@bean
public datasource datasource() {
return new embeddeddatabasebuilder().settype(embeddeddatabasetype.h2).build();
}
public localcontainerentitymanagerfactorybean entitymanagerfactory() {
localcontainerentitymanagerfactorybean emf = new localcontainerentitymanagerfactorybean();
emf.setdatasource(datasource());
emf.setpackagestoscan("com.hantsylabs.example.spring.model");
emf.setpersistenceprovider(new hibernatepersistence());
emf.setjpaproperties(jpaproperties());
return emf;
private properties jpaproperties() {
properties extraproperties = new properties();
extraproperties.put("hibernate.format_sql", "true");
extraproperties.put("hibernate.show_sql", "true");
extraproperties.put("hibernate.hbm2ddl.auto", "create");
return extraproperties;
public platformtransactionmanager transactionmanager() {
return new jpatransactionmanager(entitymanagerfactory().getobject());
}

import org.apache.commons.dbcp.basicdatasource
import org.springframework.orm.jpa.jpatransactionmanager
import org.springframework.orm.jpa.localcontainerentitymanagerfactorybean
import com.hantsylabs.example.spring.jpa.jpaconferencedaoimpl
beans {
datasource(basicdatasource) {
driverclassname = "org.h2.driver"
url = "jdbc:h2:mem:spring4-sandbox"
username = "sa"
password = ""
}
entitymanagerfactory(localcontainerentitymanagerfactorybean){
persistenceproviderclass="org.hibernate.ejb.hibernatepersistence"
datasource=datasource
persistenceunitname="persistenceunit"
packagestoscan=["com.hantsylabs.example.spring.model"]
jpaproperties=[
"hibernate.format_sql":"true",
"hibernate.show_sql":"true",
"hibernate.hbm2ddl.auto":"create"
]
}
transactionmanager(jpatransactionmanager){
entitymanagerfactory=entitymanagerfactory
conferencedao(jpaconferencedaoimpl){
}