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

要使用Groovy,首先用maven下载Groovy的包,pom.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

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

Annotation

  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. @Bean
  6. public DataSource dataSource() {
  7. return new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.H2).build();
  8. }
  9. @Bean
  10. public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
  11. LocalContainerEntityManagerFactoryBean emf = new LocalContainerEntityManagerFactoryBean();
  12. emf.setDataSource(dataSource());
  13. emf.setPackagesToScan("com.hantsylabs.example.spring.model");
  14. emf.setPersistenceProvider(new HibernatePersistence());
  15. emf.setJpaProperties(jpaProperties());
  16. return emf;
  17. }
  18. private Properties jpaProperties() {
  19. Properties extraProperties = new Properties();
  20. extraProperties.put("hibernate.format_sql", "true");
  21. extraProperties.put("hibernate.show_sql", "true");
  22. extraProperties.put("hibernate.hbm2ddl.auto", "create");
  23. return extraProperties;
  24. }
  25. @Bean
  26. public PlatformTransactionManager transactionManager() {
  27. return new JpaTransactionManager(entityManagerFactory().getObject());
  28. }
  29. }

Groovy DSL

  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. beans {
  6. dataSource(BasicDataSource) {
  7. driverClassName = "org.h2.Driver"
  8. url = "jdbc:h2:mem:spring4-sandbox"
  9. username = "sa"
  10. password = ""
  11. }
  12. entityManagerFactory(LocalContainerEntityManagerFactoryBean){
  13. persistenceProviderClass="org.hibernate.ejb.HibernatePersistence"
  14. dataSource=dataSource
  15. persistenceUnitName="persistenceUnit"
  16. packagesToScan=["com.hantsylabs.example.spring.model"]
  17. jpaProperties=[
  18. "hibernate.format_sql":"true",
  19. "hibernate.show_sql":"true",
  20. "hibernate.hbm2ddl.auto":"create"
  21. ]
  22. }
  23. transactionManager(JpaTransactionManager){
  24. entityManagerFactory=entityManagerFactory
  25. }
  26. conferenceDao(JpaConferenceDaoImpl){
  27. }
  28. }

spring4.0之八:Groovy DSL的更多相关文章

  1. Spring4.0支持Groovy配置

    介绍 前一段时间观注了一下Spring4.0的一些特性,当中就有对Groovy配置的支持.因为临时还没有很深入的研究.所以举个小样例来说明一下怎样支持Groovy配置. package shuai.s ...

  2. Spring4.0系列9-websocket简单应用

    http://wiselyman.iteye.com/blog/2003336 ******************************************* Spring4.0系列1-新特性 ...

  3. Spring-Context之三:使用XML和Groovy DSL配置Bean

    在第一讲中显示了如何使用注解配置bean,其实这是Spring3引进的特性,Spring2使用的是XML的方式来配置Bean,那时候漫天的XML文件使得Spring有着配置地狱的称号.Spring也一 ...

  4. [转]Struts2.3.16.1+Hibernate4.3.4+Spring4.0.2 框架整合

    原文地址:http://blog.csdn.net/ycb1689/article/details/22928519 最新版Struts2+Hibernate+Spring整合 目前为止三大框架最新版 ...

  5. Spring4.0编程式定时任务配置

    看过很多定时调度的配置,大多使用XML配置,觉得比较麻烦,也比较老套.这里介绍一种基于spring4.0注解编程式配置定时任务,简单清晰,使用方便.. 至于引入spring相关jar这里不多说,直接切 ...

  6. Spring4.0.1+Quartz2.2.1实现定时任务调度[亲测可用]

    Spring4.0.1+Quartz2.2.1实现定时任务调度[亲测可用] tip:只需要配置xml文件即可 1.第三方依赖包的引入 <properties> <project.bu ...

  7. [CXF REST标准实战系列] 二、Spring4.0 整合 CXF3.0,实现测试接口

    Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket Reprint it anywhere u want. 文章Points: 1.介绍RESTful架构 ...

  8. 项目ITP(六) spring4.0 整合 Quartz 实现动态任务调度

    前言 系列文章:[传送门] 项目需求: http://www.cnblogs.com/Alandre/p/3733249.html 上一博客写的是基本调度,后来这只能用于,像每天定个时间 进行数据库备 ...

  9. 项目ITP(五) spring4.0 整合 Quartz 实现任务调度

    前言 系列文章:[传送门] 项目需求: 二维码推送到一体机上,给学生签到扫描用.然后需要的是 上课前20分钟 ,幸好在帮带我的学长做 p2p 的时候,接触过.自然 quartz 是首选.所以我就配置了 ...

随机推荐

  1. iptables filter表 案例、iptables nat表的路由功能 、端口映射

    1.小案例 #!/bin/bashipt="/usr/sbin/iptables"$ipt -F$ipt -P INPUT DROP$ipt -P OUTPUT ACCEPT$ip ...

  2. SQL-学习过程-001

    1.了解什么是SQL和T-SQL 2.对数据库的对象的学习 数据库>>>数据表>>>字段>>>记录>>>视图>>&g ...

  3. Python字符编码转换

    编码回顾 在备编码相关的课件时,在知乎上看到一段关于Python编码的回答这哥们的这段话说的太对了,搞Python不把编码彻底搞明白,总有一天它会猝不及防坑你一把.不过感觉这哥们的答案并没把编码问题写 ...

  4. ACM-ICPC 2018 徐州赛区网络预赛(9.9)

    #include<bits/stdc++.h> #define int long long using namespace std; ; ; ]; int quick(int a,int ...

  5. queue 的基本用法

    queue 1.back() 返回一个引用,指向最后一个元素2.empty() 如果队列空则返回真3.front() 返回第一个元素4.pop() 删除第一个元素5.push() 在末尾加入一个元素6 ...

  6. Go Example--接口

    package main import ( "math" "fmt" ) type geometry interface { area() float64 pe ...

  7. tile38 server 密码保护

    默认tile38 是没有密码保护的,我们可以通过配置指定密码,类似redis 的,但是redis 的一般我们是配置在 配置文件中的 环境准备 docker-compose 文件   version: ...

  8. openresty 使用lua-resty-shell 执行shell 脚本

    lua-resty-shell 是一个很不错的项目,让我们可以无阻塞的执行shell命令,之间的通信 是通过socket (一般是unix socket) 环境准备 docker-compose 文件 ...

  9. super and this

    super 指向父类的一个指针, 引用父类中的属性,方法或者构造函数 public class Father { String name ; Father(String myName){ name = ...

  10. ML(附录4)——拉格朗日乘数法

    基本的拉格朗日乘子法(又称为拉格朗日乘数法),就是求函数 f(x1,x2,...) 在 g(x1,x2,...)=C 的约束条件下的极值的方法.其主要思想是引入一个新的参数 λ (即拉格朗日乘子),将 ...