Spring4.0系列8-Groovy DSL

简介:

4.0的一个重要特征就是完全支持Groovy,Groovy是spring主导的一门基于JVM的脚本语言(动态语言)。在spring 2.x,脚本语言通过 Java scripting engine在Spring中得到支持。而在4.0中,Groovy的变得更重要,Groovy可以替换xml和注解用来作为bean配置。

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

Xml代码   收藏代码
  1. <dependency>  
  2.  <groupId>org.codehaus.groovy</groupId>  
  3.  <artifactId>groovy-all</artifactId>  
  4.  <version>2.1.8</version>  
  5. </dependency>  

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

XML

Xml代码   收藏代码
  1. <jdbc:embedded-database id="dataSource" type="H2">  
  2. </jdbc:embedded-database>  
  3.   
  4. <bean  
  5.  class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"  
  6.  id="entityManagerFactory">  
  7.  <property name="persistenceUnitName" value="persistenceUnit" />  
  8.  <property name="dataSource" ref="dataSource" />  
  9.  <property name="persistenceProviderClass" value="org.hibernate.ejb.HibernatePersistence"></property>  
  10.  <property name="packagesToScan">  
  11.   <array>  
  12.    <value>com.hantsylabs.example.spring.model</value>  
  13.   </array>  
  14.  </property>  
  15.  <property name="jpaProperties">  
  16.   <value>  
  17.    hibernate.format_sql=true  
  18.    hibernate.show_sql=true  
  19.    hibernate.hbm2ddl.auto=create  
  20.   </value>  
  21.  </property>  
  22. </bean>  
  23.   
  24. <bean class="org.springframework.orm.jpa.JpaTransactionManager"  
  25.  id="transactionManager">  
  26.  <property name="entityManagerFactory" ref="entityManagerFactory" />  
  27. </bean>  

 

Annotation

 

Java代码   收藏代码
  1. @Configuration  
  2. @ComponentScan(basePackages = { "com.hantsylabs.example.spring.dao","com.hantsylabs.example.spring.jpa" })  
  3. @EnableTransactionManagement(mode=AdviceMode.ASPECTJ)  
  4. public class JpaConfig {  
  5.   
  6.  @Bean  
  7.  public DataSource dataSource() {  
  8.   return new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.H2).build();  
  9.  }  
  10.   
  11.  @Bean  
  12.  public LocalContainerEntityManagerFactoryBean entityManagerFactory() {  
  13.   LocalContainerEntityManagerFactoryBean emf = new LocalContainerEntityManagerFactoryBean();  
  14.   emf.setDataSource(dataSource());  
  15.   emf.setPackagesToScan("com.hantsylabs.example.spring.model");  
  16.   emf.setPersistenceProvider(new HibernatePersistence());  
  17.   emf.setJpaProperties(jpaProperties());  
  18.   return emf;  
  19.  }  
  20.   
  21.  private Properties jpaProperties() {  
  22.   Properties extraProperties = new Properties();  
  23.   extraProperties.put("hibernate.format_sql""true");  
  24.   extraProperties.put("hibernate.show_sql""true");  
  25.   extraProperties.put("hibernate.hbm2ddl.auto""create");  
  26.   return extraProperties;  
  27.  }  
  28.   
  29.  @Bean  
  30.  public PlatformTransactionManager transactionManager() {  
  31.   return new JpaTransactionManager(entityManagerFactory().getObject());  
  32.  }  
  33.   
  34. }  

 

Groovy DSL

Java代码   收藏代码
  1. import org.apache.commons.dbcp.BasicDataSource  
  2. import org.springframework.orm.jpa.JpaTransactionManager  
  3. import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean  
  4. import com.hantsylabs.example.spring.jpa.JpaConferenceDaoImpl  
  5.   
  6. beans {  
  7.      dataSource(BasicDataSource) {     
  8.          driverClassName = "org.h2.Driver"  
  9.          url = "jdbc:h2:mem:spring4-sandbox"  
  10.          username = "sa"  
  11.          password = ""  
  12.      }  
  13.     
  14.   entityManagerFactory(LocalContainerEntityManagerFactoryBean){  
  15.    persistenceProviderClass="org.hibernate.ejb.HibernatePersistence"  
  16.    dataSource=dataSource  
  17.    persistenceUnitName="persistenceUnit"  
  18.    packagesToScan=["com.hantsylabs.example.spring.model"]  
  19.    jpaProperties=[  
  20.     "hibernate.format_sql":"true",  
  21.     "hibernate.show_sql":"true",  
  22.     "hibernate.hbm2ddl.auto":"create"  
  23.     ]  
  24.   }  
  25.     
  26.   transactionManager(JpaTransactionManager){  
  27.    entityManagerFactory=entityManagerFactory  
  28.   }  
  29.     
  30.   conferenceDao(JpaConferenceDaoImpl){  
  31.   }  
  32.   
  33.  }  
目录
相关文章
|
Java Python Spring
spring + groovy 实现动态代码注入执行
spring + groovy 实现动态代码注入执行
5095 0
|
6天前
|
SQL Java 关系型数据库
spring data elasticsearch 打印sql(DSL)语句
spring data elasticsearch 打印sql(DSL)语句
190 0
|
安全 Oracle NoSQL
Java 近期新闻:Vector API、Spring 升级及 CVE、Payara 平台、Groovy 和 TomEE 升级
Java 近期新闻综述,内容主要涉及 OpenJDK、JEP 426、Oracle 发布 4 月关键补丁更新、JDK 19、Liberica JDK 及原生镜像工具包升级、多个 Spring 点版本和里程碑版本、Payara 平台 April 2022 版本发布、Quarkus 2.8.1.Final、Apache Groovy 4.0.2、Apache TomEE 8.0.11、JobRunr 5.0.1 和一项 JReleaser 1.0 升级。
257 0
|
SQL Java .NET
Spring Boot 使用 Groovy 模板引擎开发视图层
Spring Boot 使用 Groovy 模板引擎开发视图层 image.png groovy模板页面扩展名是 .tpl TplApplication.
1716 0
|
Java 关系型数据库 Apache
8.1 Spring Boot集成Groovy混合Java开发
8.1 Spring Boot集成Groovy混合Java开发 本章节我们使用SpringBoot集成Groovy混合Java开发一个极简的RestAPI。
2811 0
|
关系型数据库 Java Apache
《Spring Boot极简教程》第8_章: Spring Boot集成Groovy混合Java开发
第8_章: Spring Boot集成Groovy混合Java开发 本章我们使用SpringBoot集成Groovy混合Java开发一个极简的RestAPI。
1991 0
|
Java Spring
Spring4.0支持Groovy配置
<p>介绍</p> <p>    前一段时间观注了一下Spring4.0的一些特性,其中就有对Groovy配置的支持。由于暂时还没有非常深入的研究,所以举个小例子来说明一下如何支持Groovy配置。</p> <p><br></p> <p></p> <pre class="java" name="code">package shuai.study.spring.bean; publ
1052 0
|
XML Java 测试技术
Spring-Context之三:使用XML和Groovy DSL配置Bean
在第一讲中显示了如何使用注解配置bean,其实这是Spring3引进的特性,Spring2使用的是XML的方式来配置Bean,那时候漫天的XML文件使得Spring有着配置地狱的称号。Spring也一直在力求改变这一缺陷。
879 0
|
6天前
|
Java 应用服务中间件 Maven
SpringBoot 项目瘦身指南
SpringBoot 项目瘦身指南
63 0
|
6天前
|
缓存 安全 Java
Spring Boot 面试题及答案整理,最新面试题
Spring Boot 面试题及答案整理,最新面试题
143 0