java

位置:IT落伍者 >> java >> 浏览文章

用Java在各种框架下编译Scala项目


发布日期:2022年11月04日
 
用Java在各种框架下编译Scala项目

在IDE上的设置

首先下载的IntelliJ IDEA的x(社区版)因为目前它是最好的Scala的IDE然后选择File |设置|插件选择可用的选项卡来安装Scala插件

创建Maven项目

在IntelliJ IDEA中选择文件|新建项目然后选择Maven的模块创建一个Maven项目然后修改如下所示的pomxml添加所有你需要的设置建立Scala的汇编语言

<project xmlnsxmlns=xmlns:xsi=instance

xsi:schemaLocation=v__xsd>

<modelVersion></modelVersion>

<groupId>comfoo</groupId>

<artifactId>myapp</artifactId>

<packaging>war</packaging>

<version>SNAPSHOT</version>

<name>myapp Java EE Webapp</name>

<url>;/url>

<properties>

<springversion>RELEASE</springversion>

</properties>

<repositories>

<repository>

<id></id>

<name>Repository hosting the jee artifacts</name>

<url>;/url>

</repository>

<repository>

<id></id>

<name>Scalatools Maven Repository</name>

<url>;/url>

</repository>

<repository>

<id>wptrelease</id>

<url>repo/releases</url>

</repository>

<repository>

<id>wptsnapshot</id>

<url>repo/snapshots</url>

</repository>

</repositories>

<pluginRepositories>

<pluginRepository>

<id></id>

<name>Scalatools Maven Repository</name>

<url>;/url>

</pluginRepository>

</pluginRepositories>

<dependencyManagement>

<dependencies>

<dependency>

<groupId>orgspringframework</groupId>

<artifactId>springcontext</artifactId>

<version>${springversion}</version>

</dependency>

<dependency>

<groupId>orgspringframework</groupId>

<artifactId>springcore</artifactId>

<version>${springversion}</version>

</dependency>

<dependency>

<groupId>orgspringframework</groupId>

<artifactId>springweb</artifactId>

<version>${springversion}</version>

</dependency>

<dependency>

<groupId>orgspringframework</groupId>

<artifactId>springorm</artifactId>

<version>${springversion}</version>

</dependency>

</dependencies>

</dependencyManagement>

<dependencies>

<dependency>

<groupId>comhdatabase</groupId>

<artifactId>h</artifactId>

<version></version>

</dependency>

<dependency>

<groupId>orghibernate</groupId>

<artifactId>hibernateentitymanager</artifactId>

<version>GA</version>

</dependency>

<dependency>

<groupId>orgspringframework</groupId>

<artifactId>springorm</artifactId>

</dependency>

<dependency>

<groupId>dev</groupId>

<artifactId>wptcore</artifactId>

<version>SNAPSHOT</version>

<scope>test</scope>

</dependency>

<dependency>

<groupId>dev</groupId>

<artifactId>wptruntimespring</artifactId>

<version>SNAPSHOT</version>

</dependency>

<dependency>

<groupId>javax</groupId>

<artifactId>javaeewebapi</artifactId>

<version></version>

<scope>provided</scope>

</dependency>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version></version>

<scope>test</scope>

</dependency>

<dependency>

<groupId>orgscalalang</groupId>

<artifactId>scalalibrary</artifactId>

<version>RC</version>

</dependency>

<dependency>

<groupId>orgapachewicket</groupId>

<artifactId>wicket</artifactId>

<version></version>

</dependency>

<dependency>

<groupId>orgslfj</groupId>

<artifactId>slfjlogj</artifactId>

<version></version>

</dependency>

</dependencies>

<build>

<pluginManagement>

<plugins>

<plugin>

<groupId>orgapachemavenplugins</groupId>

<artifactId>mavencompilerplugin</artifactId>

<version></version>

</plugin>

<plugin>

<groupId>orgscalatools</groupId>

<artifactId>mavenscalaplugin</artifactId>

<version></version>

</plugin>

</plugins>

</pluginManagement>

<plugins>

<plugin>

<groupId>orgapachemavenplugins</groupId>

<artifactId>mavencompilerplugin</artifactId>

<executions>

<execution>

<phase>compile</phase>

<goals>

<goal>compile</goal>

</goals>

</execution>

</executions>

<configuration>

<source></source>

<target></target>

</configuration>

</plugin>

<plugin>

<groupId>orgapachemavenplugins</groupId>

<artifactId>mavenwarplugin</artifactId>

<version>beta</version>

<configuration>

<failOnMissingWebXml>false</failOnMissingWebXml>

</configuration>

</plugin>

<plugin>

<groupId>orgscalatools</groupId>

<artifactId>mavenscalaplugin</artifactId>

<executions>

<execution>

<id>scalacompilefirst</id>

<phase>processresources</phase>

<goals>

<goal>addsource</goal>

<goal>compile</goal>

</goals>

</execution>

<execution>

<id>scalatestcompile</id>

<phase>processtestresources</phase>

<goals>

<goal>testCompile</goal>

</goals>

</execution>

</executions>

</plugin>

</plugins>

<finalName>myapp</finalName>

</build>

</project>

webxml中设置

接下来修改main/webapp/WEBINF/webxml从而确立了Wicket的过滤器打开Spring的JPA实体管理器和Spring监听器进行Spring的初始化

<?xml version= encoding=UTF?>

<webapp version=xmlns=xmlns:xsi=instance

xsi:schemaLocation=app__xsd>

<filter>

<filtername>f</filtername>

<filterclass>orgspringframeworkormjpasupportOpenEntityManagerInViewFilter</filterclass>

</filter>

<filter>

<filtername>f</filtername>

<filterclass>orgapachewicketprotocolhttpWicketFilter</filterclass>

<initparam>

<paramname>applicationClassName</paramname>

<paramvalue>comfoomyappMyApp</paramvalue>

</initparam>

</filter>

<filtermapping>

<filtername>f</filtername>

<urlpattern>/app/*</urlpattern>

</filtermapping>

<filtermapping>

<filtername>f</filtername>

<urlpattern>/*</urlpattern>

</filtermapping>

<contextparam>

<paramname>contextConfigLocation</paramname>

<paramvalue>classpath:/beansxml</paramvalue>

</contextparam>

<listener>

<listenerclass>orgsprntextContextLoaderListener</listenerclass>

</listener>

</webapp>

设置Spring bean访问和调用的数据库

要定义这些Spring bean创建main/resources的beansxml以及一下的内容

<?xml version= encoding=UTF ?>

<beansxmlnsbeansxmlns=

xmlns:xsi=instance

xmlns:context=

xmlns:tx=

xsi:schemaLocation=

beansxsd

contextxsd

txxsd>

<context:componentscan basepackage=comfoomyapp/>

<bean id=emfclass=orgspringframeworkormjpaLocalContainerEntityManagerFactoryBean>

<property name=persistenceXmlLocationvalue=classpath:/METAINF/mypersistencexml/>

</bean>

<bean id=transactionManagerclass=orgspringframeworkormjpaJpaTransactionManager>

<property name=entityManagerFactory ref=emf/>

</bean>

<tx:annotationdriven />

</beans>

读取数据库配置中persistencexml文件在这里您将获得一个主目录中名为MyApp的H数据库因此创建main/resources/METAINF文件的内容如下

<persistencexmlnspersistencexmlns=

xmlns:xsi=instance

xsi:schemaLocation=__xsd

version=>

<persistenceunit name=myapp transactiontype=RESOURCE_LOCAL>

<provider>orghibernateejbHibernatePersistence</provider>

<properties>

<propertynamepropertyname=nnectiondriver_classvalue=orghDriver/>

<property name=nnectionurlvalue=jdbc:h:tcp://localhost/~/myapp/>

<propertynamepropertyname=nnectionusername value=sa/>

<propertynamepropertyname=nnectionpassword value=/>

<property name=hibernatedialectvalue=orghibernatedialectHDialect/>

<property name=hibernatehbmddlautovalue=create/>

</properties>

</persistenceunit>

/persistence>

创建Wicket的页面

在这里您将创建一个Wicket页面显示从数据库加载一些内容因此创建主/Scala文件夹右键单击它并选择新建|Scala类命名为我的页面类和投入comfoomyapp包中如下所示

package comfoomyapp

import orgapacl_

import basicLabel

import list{ListItem ListView}

importorgapachewicketspringinjectionannotSpringBean

import orgapachewicketmodelCompoundPropertyModel

class MyPage extends WebPage {

@SpringBean

var ps: ProductService = _

val productListView = newListView[Product](productListView psgetAll) {

def populateItem(item: ListItem[Product]) = {

itemsetModel(newCompoundPropertyModel[Product](itemgetDefaultModelObject))

itemadd(new Label(name))

itemadd(new Label(price))

}

}

add(productListView)

}

请注意在创建ProductService对象加载的文件之后使用此外请注意该字段被分配到一个下划线(_)Scala编译为不可初始化的而是留在默认状态在你将覆盖作为编译之前执行Spring bean的页面构造现在创建在src/main/resources/com/foo/myapp的的l文件

<!DOCTYPE HTML PUBLIC //WC//DTD HTML Transitional//EN>

<html>

<table border=>

<tr wicket:id=productListView>

<td wicket:id=name></td>

<td wicket:id=price></td>

</tr>

</table>

</html>

创建ProductService

右键单击在in the src/main/scala文件夹中的comfoomyapp包并选择New | Scala的类然后选择创建ProductService

package comfoomyapp

import javautilList

trait ProductService {

def getAll: List[Product]

}

这是接口对创造一个DefaultProductService的Scala在同一个包内进行执行操作

package comfoomyapp

import javaxpersistence{PersistenceContext EntityManager}

import orgspringframeworkstereotype{Service}

importorgspringframeworktransactionannotationTransactional

importorgspringframeworkbeansfactoryannotationAutowired

@Service

@Transactional

class DefaultProductService extends ProductService {

@Autowired

var products: Products = _

def getAll = productsgetAll

}

请注意把它使用类型文件命名为DAO

创建文件的DAO

要创建的DAO创建一个名为在同一文件夹

package comfoomyapp

import javautilList

trait Products {

def getAll: List[Product]

}

然后创建在同一文件夹中的执行Scala的DefaultProducts文件

package comfoomyapp

import javaxpersistence{PersistenceContext EntityManager}

import orgspringframeworkstereotypeRepository

import javautilList

@Repository

class DefaultProducts extends Products {

@PersistenceContext

var em: EntityManager = _

def getAll = {

emcreateQuery(select p from Product p)getResultListasInstanceOf[List[Product]]

}

}

创建entity程序

创建entity程序并将其映射到数据库

package comfoomyapp

import javaxpersistence{GeneratedValue Id Entity}

@Entity

class Product {

@Id

@GeneratedValue

var id: Long = _

var name: String = _

var price: Double = _

}

创建Wicket的应用程序

最后创建在同一个MyApp的Scala程序

package comfoomyapp

import orgapachewicketprotocolhttpWebApplication

devwicketpagetestMockableSpringBeanInjector

class MyApp extends WebApplication {

def getHomePage = classOf[MyPage]

override def init = {

MockableSpringBeanInjectorinstallInjector(this)

}

}

在这里您指定为首页我的目录植入Spring Bean中

运行应用程序

随着IntelliJ IDEA的版本不断改进您将嵌入到应用服务器运行您的应用程序这非常容易在刚刚创建的测试comfoomyapp的ManualTest在刚刚创建的测试comfoomyapp包一类ManualTest/scala文件(不是main/scala文件)以下内容是

package comfoomyapp

devwicketpagetest{WebAppJettyConfiguration WicketAppJettyLauncher}

object ManualTest {

def main(args: Array[String]) {

val l = new WicketAppJettyLauncher

lstartAppInJetty(new WebAppJettyConfiguration)

}

}

要运行的应用程序首先需要运行数据库服务器上的H程序所以在下载和解压然后变成h/bin和运行hbat(或在Linux上hsh)ManualTest是在IDEA的编辑器上在IDEA选择运行DEA它将运行ManualTestJetty的运行您的应用程序

为了测试它请尝试通过在浏览//localhost:/app

不知道各位感觉如何感谢各位支持!谢谢!

原文名Getting started with Scala Spring Hibernate & Wicket

               

上一篇:Java异常

下一篇:Java版快速排序