Scala可以和Java程序无缝拼接,因为Scala文件编译后也是成为.class文件,并且在JVM上运行。
Java 可以在 Scala SBT 模式下兼容运行,Scala 也可以在 Java Maven 模式下兼容运行。
1.Maven pom 修改
<properties>
<scala.version>2.11.2</scala.version>
</properties>
<!--maven dependency configuration-->
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>${scala.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-compiler</artifactId>
<version>${scala.version}</version>
<scope>compile</scope>
</dependency>
<!--build plugins configuration-->
<plugin>
<groupId>org.scala-tools</groupId>
<artifactId>maven-scala-plugin</artifactId>
<version>2.9.1</version>
<executions>
<execution>
<id>compile</id>
<goals>
<goal>compile</goal>
</goals>
<phase>compile</phase>
</execution>
<execution>
<id>test-compile</id>
<goals>
<goal>testCompile</goal>
</goals>
<phase>test-compile</phase>
</execution>
<execution>
<phase>process-resources</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
2.Scala Class Constructor
import scala.beans.BeanProperty
/**
* Created by yuanlang on 10/19/1629343.
*/
class TradeNotifyDTO(@BeanProperty var orderIds:String, @BeanProperty var tagName:String,
@BeanProperty var statusCode:String, @BeanProperty var msgEventType:String,
@BeanProperty var group:String) {
def this() = this(null, null, null, null, null)
override def toString = s"TradeNotifyDTO(orderIds=$orderIds, tagName=$tagName, statusCode=$statusCode, msgEventType=$msgEventType, group=$group)"
}
这种工程结构已经在我们的后台应用中实现,技术栈为:
- Tomcat
- Spring Boot (MVC)
- Scala
- Java
- iBatis
参考资料:
http://www.codecommit.com/blog/scala/joint-compilation-of-scala-and-java-sources