天天看点

Spring4.0系列8-Groovy DSLXMLAnnotationGroovy DSL

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

Spring4.0系列8-Groovy DSLXMLAnnotationGroovy DSL

<dependency>  

 <groupid>org.codehaus.groovy</groupid>  

 <artifactid>groovy-all</artifactid>  

 <version>2.1.8</version>  

</dependency>  

 下面使用xml,java annotation,groovy dsl实现相同功能的不同配置方式比较

Spring4.0系列8-Groovy DSLXMLAnnotationGroovy 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" />  

Spring4.0系列8-Groovy DSLXMLAnnotationGroovy DSL

@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());  

}  

Spring4.0系列8-Groovy DSLXMLAnnotationGroovy DSL

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){  

 }