Scala与Spring:强强联合
2010-08-04 00:00:00 来源:WEB开发网使用:
class PersonDaoTestCase extends AbstractTransactionalDataSourceSpringContextTests {
@BeanProperty var personDao:PersonDao = null
override def getConfigLocations() = Array("ctx-jpa.xml", "ctx-datasource.xml")
def testSavePerson {
expect(0)(personDao.findAll().size)
personDao.save(new Person("Rod Johnson"))
val persons = personDao.findAll()
expect(1)( persons size)
assert(persons.exists(_.name ==”Rod Johnson”))
}
}
接下来解释上面的代码是如何解决之前遇到的那些问题的:
关于集合
Scala 2.7.x提供了一个方便的Java集合到Scala集合的转换类,这是通过隐式转换实现的。上面的示例将一个Java list转换为Scala list,如下代码所示:
导入Scala.collection.jcl.Conversions类的所有方法:
import Scala.collection.jcl.Conversions._ 这个类提供了隐式的转换方法将Java集合转换为对应的Scala集合“包装器”。对于java.util.List来说,Scala会创建一个Scala.collection.jcl.BufferWrapper。
调用BufferWrapper的toList()方法返回Scala.List集合的一个实例。
下面的代码阐述了这个转换过程:
def findAll() : List[T] = {
getJpaTemplate().find("from " + entityClass.getName).toList.asInstanceOf[List[T]]
}
总是手工调用“toList”方法来转换集合有些麻烦。幸好,Scala 2.8(在本文撰写之际尚未发布最终版)将会解决这个瑕疵,它可以通过scala.collection.JavaConversions类将Java转换为Scala,整个过程完全透明。
更多精彩
赞助商链接