1.2.项目创建与配置
之前我们在概述中提到,为简化我们创建BDF2项目,我们提供了一个在线的BDF2项目创建向导,通过该向导,我们只需要根据项目情况选择要使用的模块即可完成项目的创建工作。这个在线创建项目的向导地址如下:
http://bsdn.org/projects/bdf/deploy/bdf2-new-project-wizard/view.Wizard.d
通过该向导,选择好我们需要使用的BDF2模块,再选择我们需要使用的项目类型:Maven Project或者Dynamic webproject,点击“生成BDF2项目”按钮,系统在计算好项目依赖后就会提示我们下载创建好的项目,这里需要特别指出的是,如果您选择的项目类型为Maven Project,那么服务端基本不需要做太多工作,项目立马就可以下载;相反,如果您选择的是Dynamic webproject,那么服务端就需要做一些工作,特别是计算项目依赖的第三方jar,所以相比Maven Project服务端计算的时间要长,同时因为Dynamicweb project项目的第三方Jar是放在项目当中,所以生成的项目体积也相对较大。这里,我们推荐使用MavenProject,利用Maven来管理我们的项目,相比传统的管理方式优势太多了,大家可以去Google一下。
创建创建好之后,我们可以通过下面的URL来了解如何将在线创建的项目导入到我们的Eclipse当中:
http://bsdn.org/projects/bdf/deploy/bdf2-new-project-wizard/doc.html
在这篇文档当中最后提供到数据源的配置,默认我们通过在线向导创建的项目当中采用的是HSQL数据库,它使得我们创建的项目导入到Eclipse当中立马就可以运行。当然实际的项目我们不会采用HSQL数据库,所以我们需要修改如文档当中得到的数据源配置信息,如下图所示:
在上面的截图当中,一共有三个Spring的bean:
第一个bean的ID是dataSource,也就是我们需要配置的连接目标数据库的数据源信息,可以看到这个bean默认采用的是apache的dbcp连接池,当然如果您有其它连接池可以选择,做对应的修改即可,如果您就采用apache的dbcp,那么需要修改其下的url、driverClassName、username及password三个属性,将其改成你目标数据库对应的相关属性信息,关于Apache的DBCP,您可以通过下面的链接了解:
http://commons.apache.org/proper/commons-dbcp/需要特别指出的是,如果采用其它数据库,或连接池的话,不要忘记加上对应的Jar文件或Maven所需要的dependency信息(如果是Maven项目的话)。
第二个Bean是个匿名bean,也就是没有为其指定ID,当然依赖Spring的规则,在这个bean初始化时会为其自动添加一个ID,具体细节,您可以Spring相关规范。这个匿名bean的parent属性指向一个ID为bdf2.dataSourceRegister的bean,也就是说当前的匿名bean是一个与ID为bdf2.dataSourceRegister的bean相同类型的bean,它有三个property,第一个就是指定它要采用的数据源连接池的ID,这里我们用的是第一个ID为dataSource的bean;第二个property是为这个数据源起一个名字,因为BDF2是支持多数据源的,支持多数据源在运行时动态切换的,所以需要为每个数据源定义一个名字,比如这里采用的是mysql作为其名称;第三个属性是用于定义当前数据源是否为默认数据源,当然也是因为多数据源功能所以才需要这个属性。
第三个Bean它的parent是bdf2.sessionFactory,同样表示其与bdf2.sessionFactory是同一类型的bean,从名字可以看出,这个bean用于配置Hibernate的SessionFactory,这个bean从平台角度来看是非常重要的,前面提到过,BDF2不再为各个模块提供建表的SCHEMA,创建表的工作将由Hibernate完成,所以配置好SessionFactory显示尤为重要。这里要着重指出的是这个bean的下面两个属性:一个是entityInterceptor属性,这个属性一定要设置成这里的bdf2.unByteCodeProxyInterceptor,这样才能保证Dorado7提交上来的JavaBean能被Hibernate的Session处理(Dorado7对提交上来的Bean做了代理处理,如果不加这个Bean,HibernateSession无法处理这种被代理过的对象);另一个就是hibernateProperties属性下的hibernate.hbm2ddl.auto属性,熟悉Hibernate的程序员都知道它的作用,这里设置成update,就表示系统在初始化时会自动将Session中的实体对象与数据库中表进行比对,如果不存在就自动创建对应的表,这样就可以省掉我们为BDF2各模块创建表的时间。当然关于HibernateSessionFactory的配置还有很多,有兴趣的程序员可以去Hibernate官网查找一下,所有属性这个Bean都是支持的。
数据源配置好之后(不管是采用默认的HSQL还是重新定义的数据源),就可以将项目启动查看运行效果啦。
如果您使用的是一个Maven Project,那么可以采用jetty:run来启动服务,但如果您采用的是传统的Dynamic WebProject,那么就可以直接使用J2EE版Eclipse中提供的server,配置一个Tomcat运行服务即可,下图中我采用的就是J2EE版Eclipse中提供的server来运行服务:
当前页面显示的内容,实际上是项目根下index.jsp中定义的内容,如上图所示,这个页面主要是引导我们在第一次运动项目时需要做的工作。第一次运行项目,所有表系统已经帮助我们自动创建完成了,但系统里还没有用户,所以在登录之前我们需要创建一系统管理员账号:点击上图中的第2项,创建一个新公司的系统管理员账号,点击之后我们可以看到如下图所示的界面:
可以看到,在注册系统管理员时还需要我们注册一些公司信息,这是因为BDF2支持SAAS模式运营的系统,通过这里的公司ID,将不同公司ID下的用户、权限等相关信息隔离开来;当然如果采用BDF2做单公司应用,这里的公司ID意义就不大了。
注册完成之后,系统会提示我们登录,我们就可以采用刚注册的账号登录,登录成功之后,可以看到一个空的,没有任何菜单项的主界面,如下图所示:这时我们需要初始化系统菜单,初始化系统菜单方法比较简单,在我们系统系统成功之后,可以回到最初看到的那个index.jsp页面,点击其中的第3项:初始化系统菜单,因为我们已登录,所以可以点击这个链接,点击链接会新开一个页面,在菜单初始化完成之后,系统会有如下提示:
Successful generating system menu
这就表示系统菜单初始化完成了,再次回到登录成功之后的主界面,就可以看到如下图所示的带有导航菜单的主界面了:
可以看到生成的菜单只有一些诸如菜单管理之类的基本信息及权限管理两部分,这是因为我们当前项目当中只有一个BDF2-CORE模块,所以只会产生这些导航菜单,相应的,如果把其它模块加到项目当中,再次初始化系统菜单就可以看到其它模块附带页面的URL菜单。
到这里为止,BDF2项目的创建与基本就完成了,接下来我们来深入到具体模块了解提供的功能。