久闻Scala大名,一直没有契机去学习,趁现在有个机会,去体验一下scala的美妙,在选择IDE的时候,看到有人推荐IntelliJ,以前开发Android的时候,使用过基于IntelliJ的android Studio,感觉良好,所以在Scala学习中,也选择IntelliJ作为开发工具。
配置Java和Scala环境
Java 配置
Mac自带Java,在Terminal中 输入
java -version
输出
Java version “170_79”
Java(TM) SE Runtime Environment (build 170_79-b15)
java HotSpot(TM) 64-Bit Server VM (build 2479-b02, mixed mode)
出现类似信息,说明你的Java环境已配置好。
Scala 配置
手动配置
官网下载地址,选择好版本
然后在网页下方
选择要下载的安装包,下载完成后,移动到你的安装目录,然后解压
我是放到了/usr/local/share/下
mv scala-xxxtgz /usr/local/share/
然后配置环境变量,在Terminal中 vim ~/bash_profile,在里面加入
SCALA_HOME=/usr/local/share/scala
export PATH=$PATH:$SCALA_HOME/bin
保存退出,然后在Terminal中
source ~/bash_profile
使配置文件生效。
在Terminal中,输入
scala version
查看信息,即表示安装成功
自动安装
在Terminal中,使用
brew install scala
这样安装的是最新版本(如果你没有安装 homebrew,请安装好以后,再重试)
如果需要安装以前老版本,比如 Scala 2104 (old version)
brew install homebrew/versions/scala210
安装成功后,在Terminal中,输入
scala version
查看信息,即表示安装成功。
IntelliJ的下载和配置
下载
官网下载地址
如果简单学习,使用社区版即可,如果专业开发,请购买专业版。如果资金充裕,建议购买专业版,不想花钱的话,网上也有很多破解方法,自行查找。
配置
下载完成后,打开IntelliJ,在菜单栏的Preference中,选择Plugins(插件),然后搜索Scala
安装即可,如果安装速度较慢,也可选择下方的Install plugin from disk
自己手动下载好插件进行安装
Hello World
安装好插件,重启IntelliJ,我们就可以开始第一写自己的第一行Scala代码了
选择 Create New Project
点击下一步,为你的项目起一个名字
点击Finish 即可
问题
注意上图中红框部分,看看SDK是否为空,如果为空,选择Create
通过 Download 新下载一个SDK,或者Browse 找到自己在第一步中自己安装Scala的路径,配置好即可。
下面就可以开始你的第一行Hello world了。
你是说Scala的type system么?老实说我也没有完全弄懂,更多的时候看看语言参考可能更好。不过就常用的几点可以大致说明下。
1 Java Array & Scala List
用过Java Array的人应该都知道,Java里面有个著名的问题。
String[] strings = {"foo", "bar"};
Object[] objects = strings;
objects[0] = 1; // ArrayStoreException here
编译器无法发现这个类型安全问题。当然这不能完全说是Java的缺陷,因为Java5之前貌似不想写那么多sort(int[] array); sort(float[] array);的话貌似也只能这么干。
这里要引出的是Scala相比引入了协变(covariant)概念。
不可变集合是可协变的,比如List[String] => List[Any]
val strings = List("foo", "bar") // immutable
val objects: List[Any] = strings // OK
可变集合是不可协变的,ListBuffer[String] 不可变成 ListBuffer[Any]
import scalacollectionmutable
val strings = mutableListBuffer("foo", "bar")
val objects: mutableListBuffer[Any] = strings
/
found : scalacollectionmutableListBuffer[String]
required: scalacollectionmutableListBuffer[Any]
Note: String <: Any, but class ListBuffer is invariant in type A
You may wish to investigate a wildcard type such as `_ <: Any` (SLS 3210)
val objects: mutableListBuffer[Any] = strings
/
事实上这样就避免的Java那个问题。
当然如果你要排序的话该怎么办?
def quickSort[A](array: Array[A])(implicit ord: Ordering[A]): Unit = ()
def quickSort[A](list: List[A])(implicit ord: Ordering[A]): List[A] = list
直接用Scala现成的Array[A]和List[A]就行了。
2 Manifest
针对类型擦除的问题,简单来说就是Java和Scala互相调用。直接用Twitter的Scala School上一段例子。
class MakeFoo[A](implicit manifest: Manifest[A]) { def make: A = manifesterasurenewInstanceasInstanceOf[A] }
(new MakeFoo[String])make // return a string ""
3 Pattern Match
在Java中检查类型是很无趣的一件事情,先要isInstanceOf,然后再强制转换,有时候还要SuppressWarning。但是在Scala中,语法层面帮你完成了这个 *** 作。
def contains(x: Int): Boolean = this match {
case Leaf(y) => x == y
case Node(left, right) => leftcontains(x) || rightcontains(x)
}
4 类设计
这可能是一个偏实际的问题,而且并不是说Java下一定没有约束方法。
考虑你设计一个汇率了,必须满足美元只能和美元相加。Scala下你可以这么做
sealed abstract class AbstractCurrency {
type Currency <: AbstractCurrency
def add(that: Currency): Currency
}
class Dollar extends AbstractCurrency {
type Currency = Dollar
def add(that: Dollar): Dollar = { / / }
}
Java下该怎么做呢?熟练的人很快就能想到用接口(抽象类,我又想到Scala下self自我表示语法了),但是无逻辑,很快你就能预见你会增加CurrencyFactory,类型判断等等。因为表达的问题,导致你为了满足约束条件而大量增加代码。有时你只要获取自己的类型判断一下就行,作为OOP你肯定不想那么干。当然大家都是过来人,不会因为这点而认为Java一点都没用,只是大家意识到了Java的OOP表达有限而已。
总的来说,Scala的type system考虑了很多,也相对较难。个人建议可以参考《Programming in Scala》,多看几遍关于类型的部分吧。
Scala软件的特点集中体现在以财务管理为核心的的高度集成化与全球化。
Scala Global Series是Scala全集成的电子商务管理软件,具有财务及资源管理、市场营销管理、供应流程管理、服务及项目流程管理、制造及商务智能管理。
Scala Global Series是多语言的,并继翻译成30多种语言,在世界60多个国家销售、安装和提供技术支持和服务。
Scala软件符合跨国公司对货币的要求。
Scala 51 - 最新版,它基于Microsoft SQL Server 70,提供超强的数据库管理能力,为客户提供增强的会计核算能力。Scala 51已通过BASDA(商业及会计软件开发商协会)按其有关EMU多货币和三角式运算的高级要求认证。
Scala Global Series
本地化及将全球运作集成起来绝非易事。然而Scala Global Series的电子商务管理解决方案已为您打造好了一切。Scala的用户能用自己的语言 *** 作软件,并同时用总部的语言和货币制作报表。不仅如此,Scala国际化的员工队伍为您提供本地化的专业知识,以及全球性的技术支持服务。
详细情况,请与当地Scala销售代表联系pr@scalacomcn
Scala Global Series是全集成的电子商务管理解决方案(eBMS),可管理众多的商务流程,具有多语言能力(被译成30多种语言),且全面支持跨国公司(其中当然包括欧元)对世界各货币的要求,它运行于Microsoft SQL Server 70之上, 具有出色的数据库管理能力。支持Windows 2000。Scala Global Serie在世界60多个国家销售、安装和提供技术支持服务。
Scala Global Series具有按本地会计准则和国际公认会计准则US-GAAP并行呈报的能力。此外,Scala Global Series符合跨国公司对货币的要求。Scala将全球化标准融于本地化专长之中。
Scala深谙您的全球商务。
●财务
总分类帐;销售分类帐;采购分类帐;合并
●物流
采购管理;销售订单;销售订单/开发票;统计;库存管理;直接开发票;市场信息
●制造流程管理
制造流程管理;产品成品核算/实际成本;车间管理;基础制造数据;主生产计划;物料需求计划;订单计划/生产活动管理
●服务
服务管理;项目管理
●人力资源
人事薪资
●系统实施
Signature
1 总分类帐
会计核算是各公司运营的核心。Scala的总分类帐功能和灵活性体现了Scala其它商务管理模块的通用性。十构面的会计核算体系贯穿各个模块,它不仅能满足不同的法规要求,还能满足分析型会计核算的要求。您能从所用的任何构面呈报或查询实际数值或预算值。加之Scala系统中内置的多货币多语言功能,使Scala成为当今全球及本地会计核算及商务管理领域中最强大的系统之一。
2 销售分类帐
要改善公司的现金流量,就要先建立有效的销售分类帐。一个功能强大的销售分类帐,不仅能更好地完成货款回收,还能奠定销售及市场营销的基础。Scala的销售分类帐模块是您实现财务及经营目标的有力工具。它包括开发票、付款、收款及呈报的例程,同时,它还能详细地记录相应的新币值及记帐值。它提供的客户原始数据及统计数据功能,能帮助您分析及细分市场。它具有的多货币及多语言灵活性,为国际化组织带来突出的优势。
3 采购分类帐
Scala的采购分类帐模块为您提供了全面的供应商信息及付款信息。它帮助您协调采购及审批作业,为您准备了丰富的付款方式,它简化各种增值税及营业税的会计核算程序,更方便地制作各种法定会计报表。您可单独使用该模块,如与采购管理模块及总分类帐模块共同使用,更能发挥出其强大功效。如果您的业务复杂,采购分类帐的会计核算构面定能将它们轻松解决。
4 合并
会计核算本身并不是最终目的。总分类帐中的数据需呈报出来。呈报时,可能需转成另一种货币,或需与其他实体的数据合并。也许需用另一种货币的凭证重报凭证(如在高通涨的国家)或按不同的科目表及/或会计年度重报。最后,也许要将数年的经营结果,为了某个特定的呈报目的而合并在一起。
5采购管理
采购例程有多种使用方法。无论您是何类型的企业,批发、零售还是制造,系统能完全适应您的业务方式。采购计划、订单处理、交货及发票管理功能既可集中也可分散, 未结的采购订单信息自动提供给Scala的各个后勤模块。使您具有一个全面的采购订单计划环境,并有助于您削减整体采购成本。
6 销售订单
Scala销售订单模块为您提供了销售及后勤的全部功能。通常,销售是您的主要营业收入,销售功能的灵活性和方便性影响着您的竞争性。Scala具有范围广泛的功能,支持销售及分销的各个阶段。由于销售订单模块与库存管理、采购及制造管理模块紧密集成,您可在销售时就能确定制造或采购的明细,以确保按时交货。
7 销售订单/开发票
Scala销售订单模块为您提供了销售及后勤的全部功能。通常,销售是您的主要营业收入,销售功能的灵活性和方便性影响着您的竞争性。Scala具有范围广泛的功能,支持销售及分销的各个阶段。由于销售订单模块与库存管理、采购及制造管理模块紧密集成,您可在销售时就能确定制造或采购的明细,以确保按时交货。
8 统计
Scala的统计模块是一个极为有用的分析工具。与其他安装的Scala模块相连,统计模块提供的信息远较其他模块内置的统计功能更详尽。您能定制报表定义、创建模板,以及专用报表,如佣金报表、毛利分析或产品统计。除能打印输出报表外,您还能保存在磁盘上、Excel文件中。统计模块是Scala后勤模块的有益补充。
9 库存管理
全面地管理您公司的物流状态,从采购到交货,需要出色的管理工具。库存管理模块可单独使用,但如与采购订单及销售订单模块集成使用,则更能发挥它的强大功效。库存管理的主要优点之一是它与各库存物料的大量数据相连。重订水平、安全库存及短缺报告能帮助您有效地管理库存,降低资本投入。库存管理模块也具有序列号及物料清单处理能力。为您提供灵活的批次处理能力、完整的跟踪能力及丰富的呈报能力。
10 直接开发票
当您需要一种简捷有效的开发票例程时,Scala的直接开发票模块就是您的有力工具。它能方便地创建非库存物料、简单服务、部门间或子公司间的发票。该模块需销售分类帐模块,以使您有效管理付款和其它作业。直接开发票模块与总分类帐集成后,具有10个会计核算构面,让您能事后分析所有数据。直接开发票模块使用方便,并与您的整个商务管理集成为一体。
11 市场信息
一个高效的销售组织需要出色的市场营销工具。Scala的市场信息模块收集您潜在及未来客户的信息。能为您挖掘新的市场机会,它集成了当前的市场活动信息,客户信息及供应商主文件中的信息。它允许您设计自己的数据库,给予您工作的完全自由。
12 Scala制造流程管理
Scala的制造管理模块是一个制造业资源计划系统(MRP II)。它能满足您对信息的最苛刻要求。它帮助您管理并控制整个制造过程。此外,它还能与财务模块相连。共同创建一个功能强大的集成系统。由于它内置了丰富的功能,整个系统具有极高的灵活性,并能对制造过程中的各个活动提供各自不同的计划和管理方法。Scala的制造管理模块对重复型,以产定销及以销定产型生产过程均适用。该模块支持准时生产、ISO 9000、EDI及CIM。
13 产品成品核算/实际成本
掌握您的生产成本至关重要。成本核算模块强化了产品加工的成本核算能力和分析潜在的隐含成本能力。成本核算模块是您标准的成本计算工具,以及各订单报价核算的工具。
14 车间管理
生产能力瓶颈总是制约您产出的因素。生产部门计划功能使您拥有一个有效的资源管理工具。
15 基础制造数据
基础制造数据能创建并维护物料清单及制造物料的工艺路线。高质量的基础数据是极为重要的,因为这些数据将成为各计算的基础。其质量高低决定着制造计划和管理有效性的高低。
16 主生产计划
主生产计划的目的是,提前多达一年时间,根据预测和实际销售量对物料和生产能力进行评估和准备。您能选择主生产计划中的产品,且主产计划能评估不同的销售预测,以确定对生产能力和物料的影响。
17 物料需求计划
物料需求计划可使您调查未来对所购原材料及已加工部件的需求。例如,您能查看完成整个生产计划(主生产计划)、一组客户订单或一个客户的订单的物料需求。
18 订单计划/生产活动管理
当您在生产资源中对员工、机器和工具作好充分定义后,以及在基础MPC数据中对物料清单作了描述后,您便能充分利用这些资源使其充分发挥作用。生产活动管理有助于计划、跟踪和分析您的加工单, 您能手工输入加工单,或用客户订单创建加工单,或从上层模块输入(比如,需求计划模块)。加工单放发后,其所需物料便被预留,相应生产部门的可用生产能力自动降低。
19服务管理
人们认为服务是昂贵的。事实上,很多公司通过高效的服务,来自零备件及技术支持的收入高于其实际产品的销售收入。Scala服务管理模块为您提供了管理服务活动的全新境界,包括对物料及资源的完全管理。Scala服务管理模块能管理上百名的技术服务人员,他们可以是分处不同地点(对于提供现场服务的公司)也可以是在室内提供服务与技术支持。有了Scala的服务管理模块,您便能计划和跟踪各项服务活动。如与Scala的其他模块集成使用,系统将更加灵活,并为您提供更大的发展空间。
20 项目管理
在当今以客户为导向的世界中,许多销售活动已成为一个个项目。一套系统设施需要大量的材料及人力来完成。有些设备的交付需要协调分包商和设计公司。即使内部活动,例如改建仓库也是一个项目。如果您的业务充满了各种项目,将由谁控制预算,又将由谁跟踪呢?Scala的项目管理模块是您的集成化工具,它能评估、预算、计划资源和跟踪项目。其灵活的四层结构能帮助您随时控制项目的进程,集中精力解决有问题的地方。
21 人事薪资
人事薪资模块适用于薪资计算周期中的各个阶段,包括雇员的录用与辞退、输入或导入的计时单、根据不同的雇佣类型及不同的支付形式计算雇员的工资单、 打印工资单、生成会计报表、税务报表、人力资源报表、审记表及各种管理日报表并自动创建总分类帐凭证。
22 Signature
Signature是我们实施Scala软件的方法。它建立在团队精神之上。它是我们在各行业、在世界各国实施众多项目的知识和经验结晶。Signature提供的标准工具和方法,能确保成功地实施系统。如您采用Scala软件及我们的系统实施方法Signature,您能在数月内拥有一个可运行的全集成的商务管理系统。明确的共同目标 - 使新系统平稳地过渡是任何一个多用户系统的基本前提。利用Signature,我们训练有素的顾问将在实施过程中一步一步地指导您。
这个问题我解决了,在设置SparkConf()的时候,需要把本机生成的JAR包路径进行制定,如:
val conf = new SparkConf()setAppName("SogouResult")setMaster("spark://master:7077")
setJars(List("D:\\IDEA workspace\\helloSpark\\out\\artifacts\\helloSpark_jar\\helloSparkjar"))
在IDE上的设置
首先 下载的IntelliJ IDEA的 x(社区版) 因为目前它是最好的Scala的IDE 然后选择File |设置|插件 选择可用的选项卡来安装Scala插件
创建Maven项目
在IntelliJ IDEA中 选择文件|新建项目 然后选择Maven的模块创建一个Maven项目 然后修改如下所示的pom xml 添加所有你需要的设置 建立Scala的汇编语言
<project xmlnsxmlns= xmlns:xsi= instance
xsi:schemaLocation= v _ _ xsd >
<modelVersion> </modelVersion>
<groupId> foo</groupId>
<artifactId>myapp</artifactId>
<packaging>war</packaging>
<version> SNAPSHOT</version>
<name>myapp Java EE Webapp</name>
<url>;/url>
<properties>
<spring version> RELEASE</spring version>
</properties>
<repositories>
<repository>
<id> </id>
<name>Repository hosting the jee artifacts</name>
<url>;/url>
</repository>
<repository>
<id></id>
<name>Scala tools Maven Repository</name>
<url>;/url>
</repository>
<repository>
<id>wpt release</id>
<url> repo/releases</url>
</repository>
<repository>
<id>wpt snapshot</id>
<url> repo/snapshots</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id></id>
<name>Scala tools Maven Repository</name>
<url>;/url>
</pluginRepository>
</pluginRepositories>
<dependencyManagement>
<dependencies>
<dependency>
<groupId> springframework</groupId>
<artifactId>spring context</artifactId>
<version>${spring version}</version>
</dependency>
<dependency>
<groupId> springframework</groupId>
<artifactId>spring core</artifactId>
<version>${spring version}</version>
</dependency>
<dependency>
<groupId> springframework</groupId>
<artifactId>spring web</artifactId>
<version>${spring version}</version>
</dependency>
<dependency>
<groupId> springframework</groupId>
<artifactId>spring orm</artifactId>
<version>${spring version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId> h database</groupId>
<artifactId>h </artifactId>
<version> </version>
</dependency>
<dependency>
<groupId> hibernate</groupId>
<artifactId>hibernate entitymanager</artifactId>
<version> GA</version>
</dependency>
<dependency>
<groupId> springframework</groupId>
<artifactId>spring orm</artifactId>
</dependency>
<dependency>
<groupId>dev</groupId>
<artifactId>wpt core</artifactId>
<version> SNAPSHOT</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>dev</groupId>
<artifactId>wpt runtime spring</artifactId>
<version> SNAPSHOT</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee web api</artifactId>
<version> </version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version> </version>
<scope>test</scope>
</dependency>
<dependency>
<groupId> scala lang</groupId>
<artifactId>scala library</artifactId>
<version> RC </version>
</dependency>
<dependency>
<groupId> apache wicket</groupId>
<artifactId>wicket</artifactId>
<version> </version>
</dependency>
<dependency>
<groupId> slf j</groupId>
<artifactId>slf j log j </artifactId>
<version> </version>
</dependency>
</dependencies>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId> apache maven plugins</groupId>
<artifactId>maven piler plugin</artifactId>
<version> </version>
</plugin>
<plugin>
<groupId> scala tools</groupId>
<artifactId>maven scala plugin</artifactId>
<version> </version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId> apache maven plugins</groupId>
<artifactId>maven piler plugin</artifactId>
<executions>
<execution>
<phase>pile</phase>
<goals>
<goal>pile</goal>
</goals>
</execution>
</executions>
<configuration>
<source> </source>
<target> </target>
</configuration>
</plugin>
<plugin>
<groupId> apache maven plugins</groupId>
<artifactId>maven war plugin</artifactId>
<version> beta </version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<plugin>
<groupId> scala tools</groupId>
<artifactId>maven scala plugin</artifactId>
<executions>
<execution>
<id>scala pile first</id>
<phase>process resources</phase>
<goals>
<goal>add source</goal>
<goal>pile</goal>
</goals>
</execution>
<execution>
<id>scala test pile</id>
<phase>process test resources</phase>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<finalName>myapp</finalName>
</build>
</project>
web xml中设置
接下来 修改main/webapp/WEB INF/web xml 从而确立了Wicket的过滤器 打开Spring的JPA实体管理器和Spring监听器 进行Spring的初始化
<xml version= encoding= UTF >
<web app version= xmlns= xmlns:xsi= instance
xsi:schemaLocation= app_ _ xsd >
<filter>
<filter name>f </filter name>
<filter class> springframework orm jpa support OpenEntityManagerInViewFilter</filter class>
</filter>
<filter>
<filter name>f </filter name>
<filter class> apache wicket protocol WicketFilter</filter class>
<init param>
<param name>applicationClassName</param name>
<param value> foo myapp MyApp</param value>
</init param>
</filter>
<filter mapping>
<filter name>f </filter name>
<url pattern>/app/</url pattern>
</filter mapping>
<filter mapping>
<filter name>f </filter name>
<url pattern>/</url pattern>
</filter mapping>
<context param>
<param name>contextConfigLocation</param name>
<param value>classpath:/beans xml</param value>
</context param>
<listener>
<listener class> sprntext ContextLoaderListener</listener class>
</listener>
</web app>
设置Spring bean访问和调用的数据库
要定义这些Spring bean 创建main/resources的beans xml以及一下的内容
<xml version= encoding= UTF >
<beansxmln eansxmlns=
xmlns:xsi= instance
xmlns:context=
xmlns:tx=
xsi:schemaLocation=
beans xsd
context xsd
tx xsd >
<context:ponent scan base package= foo myapp />
<bean id= emf class= springframework orm jpa LocalContainerEntityManagerFactoryBean >
<property name= persistenceXmlLocation value= classpath:/META INF/my persistence xml />
</bean>
<bean id= transactionManager class= springframework orm jpa JpaTransactionManager >
<property name= entityManagerFactory ref= emf />
</bean>
<tx:annotation driven />
</beans>
读取数据库配置中persistence xml文件 在这里 您将获得一个主目录中名为MyApp的H 数据库 因此 创建main/resources/META INF文件的内容如下
<persistencexmlnspersistencexmlns=
xmlns:xsi= instance
xsi:schemaLocation= _ _ xsd
version= >
<persistence unit name= myapp transaction type= RESOURCE_LOCAL >
<provider> hibernate ejb HibernatePersistence</provider>
<properties>
<propertynamepropertyname= nnection driver_class value= h Driver />
<property name= nnection url value= jdbc:h :tcp://localhost/~/myapp />
<propertynamepropertyname= nnection username value= sa />
<propertynamepropertyname= nnection password value= />
<property name= hibernate dialect value= hibernate dialect H Dialect />
<property name= hibernate hbm ddl auto value= create />
</properties>
</persistence unit>
/persistence>
创建Wicket的页面
在这里 您将创建一个Wicket页面显示从数据库加载一些内容 因此 创建主/Scala文件夹 右键单击它并选择新建|Scala类 命名为我的页面类和投入 foo myapp包中 如下所示
package foo myapp
import apacl _
import basic Label
import list {ListItem ListView}
import apache wicket spring injection annot SpringBean
import apache wicket model CompoundPropertyModel
class MyPage extends WebPage {
@SpringBean
var ps: ProductService = _
val productListView = newListView[Product]( productListView ps getAll) {
def populateItem(item: ListItem[Product]) = {
item setModel(newCompoundPropertyModel[Product](item getDefaultModelObject))
item add(new Label( name ))
item add(new Label( price ))
}
}
add(productListView)
}
请注意 在创建ProductService对象加载的文件之后使用 此外 请注意该字段被分配到一个下划线(_) Scala编译为不可初始化的 而是留在默认状态 在你将覆盖作为编译之前 执行Spring bean的页面构造 现在 创建在src/main/resources//foo/myapp的的l文件
<!DOCTYPE HTML PUBLIC //W C//DTD HTML Transitional//EN >
<>
<table border= >
<tr wicket:id= productListView >
<td wicket:id= name ></td>
<td wicket:id= price ></td>
</tr>
</table>
</>
创建ProductService
右键单击在in the src/main/scala文件夹中的 foo myapp包并选择New | Scala的类 然后选择创建ProductService
package foo myapp
import java util List
trait ProductService {
def getAll: List[Product]
}
这是接口 对创造一个DefaultProductService的Scala在同一个包内进行执行 *** 作
package foo myapp
import javax persistence {PersistenceContext EntityManager}
import springframework stereotype {Service}
import springframework transaction annotation Transactional
import springframework beans factory annotation Autowired
@Service
@Transactional
class DefaultProductService extends ProductService {
@Autowired
var products: Products = _
def getAll = products getAll
}
请注意 把它使用类型文件命名为DAO
创建文件的DAO
要创建的DAO 创建一个名为在同一文件夹
package foo myapp
import java util List
trait Products {
def getAll: List[Product]
}
然后创建在同一文件夹中的执行Scala的DefaultProducts文件
package foo myapp
import javax persistence {PersistenceContext EntityManager}
import springframework stereotype Repository
import java util List
@Repository
class DefaultProducts extends Products {
@PersistenceContext
var em: EntityManager = _
def getAll = {
em createQuery( select p from Product p ) getResultList asInstanceOf[List[Product]]
}
}
创建entity程序
创建entity程序并将其映射到数据库
package foo myapp
import javax persistence {GeneratedValue Id Entity}
@Entity
class Product {
@Id
@GeneratedValue
var id: Long = _
var name: String = _
var price: Double = _
}
创建Wicket的应用程序
最后 创建在同一个MyApp的Scala程序
package foo myapp
import apache wicket protocol WebApplication
dev wicketpagetest MockableSpringBeanInjector
class MyApp extends WebApplication {
def getHomePage = classOf[MyPage]
override def init = {
MockableSpringBeanInjector installInjector(this)
}
}
在这里 您指定为首页我的目录 植入Spring Bean中
运行应用程序
随着IntelliJ IDEA的版本不断改进 您将嵌入到应用服务器运行您的应用程序 这非常容易 在刚刚创建的测试 foo myapp的ManualTest在刚刚创建的测试 foo myapp包一类ManualTest/scala文件(不是main/scala文件) 以下内容是
package foo myapp
dev wicketpagetest {WebAppJettyConfiguration WicketAppJettyLauncher}
object ManualTest {
def main(args: Array[String]) {
val l = new WicketAppJettyLauncher
l startAppInJetty(new WebAppJettyConfiguration)
}
}
要运行的应用程序 首先需要运行数据库服务器上的H 程序 所以 在下载和解压 然后变成h /bin和运行h bat(或在Linux上h sh) ManualTest是在IDEA的编辑器上 在IDEA选择运行DEA 它将运行ManualTest Jetty的运行您的应用程序
为了测试它 请尝试通过在浏览//localhost: /app
不知道各位感觉如何 感谢各位支持!谢谢!
lishixinzhi/Article/program/Java/hx/201311/26175
按照你的要求编写的scala语言的分解质因数程序如下
object Factor {
def main(args: Array[String]): Unit = {
println("请输入一个整数");
var n = ConsolereadInt();
if(n<=0){
val nums: List[Int] = List();
println(nums);
}else if(n==1){
val nums: List[Int] = List(1);
println(nums);
}else{
print(n+"=");
var b:Array[Int] =new Array[Int](32);
var i=0;
var j=2;
var count=0;
for(i <- 2 to n){
if(n%j==0){
b(count)=j;
count+=1;
n=n/j;
j-=1;
}
j+=1;
}
for ( x <- b ) {
if(x!=0){
print(x+" ");
}
}
}
}
}
下载scala for intellij idea的插件
如上图,直接在plugins里搜索Scala,然后安装即可,如果不具备上网环境,或网速不给力。也可以直接到>
以上就是关于如何在mac intellij上写scala程序全部的内容,包括:如何在mac intellij上写scala程序、如何理解scala可以使得程序更加type-safe、请问"Scala"是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)