ITOO底层

一、pom.xml文件关系图:

以基础系统中学生这条线为例:

图一:pom.xml文件关系图

图说明:

  • 该项目是Maven项目,使用pom.xml文件对项目进行管理

管理类:(非阴影部分)

  • Itoo-root(pom.xml)

整个平台的管理包,主要由两部分构成:管理jar包版本和maven开发用的插件。Jar包版本:cas、shiro、mongoDB、log4j的版本都在这里管理Maven开发的插件:maven编译成ear、maven打包

  • itoo-base-parent(pom.xml)

管理itoo-tool、itoo-base及一些扩展的公共的jar版本

  • itoo-tool(pom.xml)

提供给使用此框架开发的所有系统的工具包:图表、mongodb、转json……如图:

业务类:(阴影部分)

  • itoo-basic-parent(pom.xml)

需要继承itoo-root的pom文件;并且统一管理本系统中用到的各个jar的版本

  • itoo-basic-api(pom.xml)

本包直接引用itoo-base包。api包依赖itoo项目中的底层包itoo-base

  • itoo-basic-base(pom.xml)

除继承本项目的parent的pom文件,还需要引用底层itoo-base包

  • itoo-basic- student-core(pom.xml)

Service层和Eao层开发使用到的依赖。例如:itoo-basic-base、itoo-basic-api、itoo-cloud-api的依赖

  • itoo-basic-student-web(pom.xml)

Web层发使用到的依赖。例如:itoo-basic-api、itoo-easyui、shiro-cas的依赖

  • itoo-basic- student-ear(pom.xml)

把下面这些jar、war的依赖关系都放到ear的pom.xml中,就可以将下面的jar、war都打到一个ear包内,把相互依赖的关系打到一起,jar之间可以互为调用,用来热部署或者打包。

  • 00-05是先后的依赖顺序,依次部署:

01--itoo-tool----------平台公共的工具类:

02--itoo-base---------平台公共的BaseEao,BaseEaoIm实现类

03--itoo-basic-api-----自己业务的api,层

04--itoo-basic-core----自己业务的核心包(实现api的接口)

05--itoo-basic-web-----自己业务的web层

符号说明:

  • :图一中实线+空三角,表示maven继承。
  • 在pom文件中,用parent节点表示,以itoo-base与itoo-base-parent之间的关系为例,在itoo-base下的pom.xml文件中parent节点的代码如下:
<parent>
	<artifactId>itoo-base-parent</artifactId>
	<groupId>com.tgb</groupId>
	<version>0.0.1-SNAPSHOT</version>
	<relativePath>../itoo-base-parent/pom.xml</relativePath>
</parent>

二、包的关系图

图二:包的关系图

底层:

  • Itoo-tool:

供给使用此框架开发的所有系统的工具包:图表、mongodb、转json……包内容:只有pom.xml文件,无具体java代码

  • Itoo-base:

底层的方法,是从个子模块中抽出来的公共的方法和实体。包含:

  • BaseEao/BaseEaoImpl:

将直接操作数据库层的公共部分抽象出来,即为itoo-base的Eao层

  • BaseBean/BaseBeanImpl:

将业务逻辑层的公共部分抽象出来,即为itoo-base的Service包

  • BaseEntity:

将实体中公用的属性提取出来作为公共的实体属性。如:updateTime、createTime……

  • Baseutiluuid:

生成uuid的策略,包含32位和64位

子模块(以基础系统模块为例):

  • itoo-basic-parent:

需要继承itoo-root的pom文件;并且统一管理本项目中用到的各个jar的版本包内容:只有pom.xml文件,无具体java代码

  • itoo-basic-api:

基础系统的Bean接口和实体以及数据库的持久化文件persistence.xml,其中接口是用来给本系统其他线和其他子模块的Sevice层使用的接口, persistence.xml配置了持久化所需的各种属性,如DataSource.

  • itoo-basic-base:

基础系统的获取实体管理器(EntityManager)的部分,这里配置了实体单元名称,且与根据itoo-basic-api下的persistence.xml中实体单元名称一致,进而通过persistence.xml的配置进行持久化.

  • itoo-basic- student-core:

基础系统模块中学生这条线的核心包。存放本条线的Eao、Service层,如:StudentEao、StudentEaoImpl、StudentBeanimpl、too-basic-student-web:

基础系统模块中学生这条线的web层,包含如:SpringMVC的controller层、SpringMVC的View层(.jsp文件)、 配置文件:web.xml、spring-mvc.xml、jboss-deployment-structure.xml

符号说明:

  • :图二中虚线+实三角,表示包图依赖。
  • 在pom文件中,用dependency节点表示,以itoo-base与itoo-tool之间的关系为例,在itoo-base下的pom.xml文件中dependency节点的代码如下(注意:图二中没有画出对第三方包的引用):
<dependencies>
	<!--java的扩展包		第三方的包  -->
	<dependency>
		<groupId>javax</groupId>
		<artifactId>javaee-api</artifactId>
	</dependency>
	<!--转json的包		第三方的包  -->
	<dependency>
		<groupId>com.fasterxml.jackson.core</groupId>
		<artifactId>jackson-annotations</artifactId>
	</dependency>
	<!--hibernate包		第三方的包  -->
	<dependency>
		<groupId>org.hibernate</groupId>
		<artifactId>hibernate-core</artifactId>
	</dependency>
	<!--itoo-tool包		本系统的包  -->
	<dependency>
		<groupId>com.tgb</groupId>
		<artifactId>itoo-tool</artifactId>
		<version>${project.version}</version>
	</dependency>
	<!--maven的插件		第三方的包  -->
	<dependency>
		<groupId>org.apache.maven.plugins</groupId>
		<artifactId>maven-javadoc-plugin</artifactId>
	</dependency>
	<!--日志log4j		第三方的包  -->
	<dependency>
		<groupId>log4j</groupId>
		<artifactId>log4j</artifactId>
	</dependency>
</dependencies>

注意:

包图中为什么没有ear包:

八期使用的jboss6没有ear,打包时需要将jar和war分别打包部署。由于我们升级了新的jboss版本,jar、war分开部署的话,还存在一些问题,我们采用打成EAR包的方式,来发布部署,把我们项目的多个jar,和war包,一次性部署到jboss,从部署上来说提高了部署的效率,开发效率.综上来看:ear是将开发需要的jar和war打包在一起的一个管理工具,所以包图中没有ear包,它不是开发包,是管理包

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-14 07:02:58

ITOO底层的相关文章

ITOO之底层搭建(一)——缺少jar

在搭建底层框架时,maven install itoo-base 和 itoo-tool(Packaging的值是ejb的)时,总是报如下的错误: maven install  itoo-base: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-ejb-plugin:2.3:ejb (default-ejb) on project itoo-base: Error assembling EJB: META-INF/ej

ITOO右击菜单实现

ITOO做了持续了这么长时间,客户端使用MVC+EF+EasyUI框架,服务端在三层基础上添加WCF服务,后来加入容器,AOP(还没怎么接触),封装了在我们刚开始看来神秘的底层方法,克服了很多技术难点,单点登录,动态建库切库...发现自己需要积累的还有很多很多,ITOO做到现在3.1,成绩系统也算到了3.0吧,不管自己进度还是什么原因,没能加入ITOO1.0,很快跟了ITOO1.0的尾巴,和ITOO2.0同步,做了成绩1.0的组长,当时新阳的一句总结很犀利:组长就是技术上什么都不懂,但哪个地方都

论底层封装--Memcached

背景: 这件事要从早之前说起,先前,我们考试系统中说要一起讲一下底层的东西.当时,组长给我和一清分的这个Memcached这个东西,要我们整理一下,然后给大家讲一讲.起初的东西不知道如何下手,因为没有资料.没有视频等等,我就找了九期的师哥要了一些资料,通过这些资料,我们做出了一些Demo,当时我们做出来之后,就没有真正运用到项目中,后来ITOO项目3.0开始后,底层说要叫几个负责模块的人,因为当时我做过这个方面,我就担任了底层缓存的任务. 第一版本: 我们底层之前是这样写的,在底层类库中: <s

itoo中为什么要用EJB3.0分布式框架

一说到EJB,总是有一种感觉就是EJB已经过时了,或者是在项目中,EJB太笨重了,使用过程中很多的功能都没有体现出来,而且EJB还会影响性能,但是在ITOO中为什么还要用EJB分布式框架呢? ITOO的技术框架结构图如下所示: 从这个图中可以看出,业务逻辑层使用EJB容器进行管理的,我刚开始接触到时候,我也很好奇为什么要用EJB分布式,而没有用webservice或者是现在比较火的阿里巴巴的dubbo+zookeeper呢.现在我就来解释以下为什么要选用企业级的ejb3.0. 第一:EJB3.0

【java】itoo项目实战之hibernate 懒加载优化性能

在做itoo 3.0 的时候,考评系统想要上线,就开始导入数据了,只导入学生2万条数据,但是导入的速度特别的慢,这个慢的原因是因为导入的时候进行了过多的IO操作.但是导入成功之后,查询学生的速度更加慢,因为底层用了hibernate的hql语句进行查询的,学习过hibernate的人都知道,如果hibernate不设置懒加载的话,只有是有关联的数据都会一次性全部都查询出来,我试了试,查询2万条数据,最深的级联查询是有5层,然后发出来的语句是460条,时间大概是10s.然后就考虑使用lazy进行优

【java】itoo项目实战之hibernate 懒载入优化性能

在做itoo 3.0 的时候,考评系统想要上线,就開始导入数据了,仅仅导入学生2万条数据,可是导入的速度特别的慢.这个慢的原因是由于导入的时候进行了过多的IO操作.可是导入成功之后,查询学生的速度更加慢.由于底层用了hibernate的hql语句进行查询的,学习过hibernate的人都知道,假设hibernate不设置懒载入的话,仅仅有是有关联的数据都会一次性所有都查询出来,我试了试.查询2万条数据,最深的级联查询是有5层,然后发出来的语句是460条,时间大概是10s.然后就考虑使用lazy进

Java底层技术系列文章-线程池框架

一.线程池结构图    二.示例 定义线程接口 public class MyThread extends Thread { @Override publicvoid run() { System.out.println(Thread.currentThread().getName() + "正在执行"); }}   1:newSingleThreadExecutor ExecutorService pool = Executors. newSingleThreadExecutor()

stl容器区别: vector list deque set map及底层实现

在STL中基本容器有: vector.list.deque.set.map set 和map都是无序的保存元素,只能通过它提供的接口对里面的元素进行访问 set :集合, 用来判断某一个元素是不是在一个组里面,使用的比较少 map :映射,相当于字典 ,把一个值映射成另一个值,如果想创建字典的话使用它好了 底层采用的是树型结构,多数使用平衡二叉树实现 ,查找某一值是常数时间,遍历起来效果也不错, 只是每次插入值的时候,会重新构成底层的平衡二叉树,效率有一定影响. vector.list.dequ

Atitit.变量的定义&#160;获取&#160;储存&#160;物理结构&#160;基本类型简化&#160;隐式转换&#160;类型推导&#160;与底层原理&#160;attilaxDSL

Atitit.变量的定义 获取 储存 物理结构 基本类型简化 隐式转换 类型推导 与底层原理 attilaxDSL 1.1. $ 美元字符, php 黑头1 1.2. 默认变量的范围和声明:1 1.3. 变量的存储,储存在变量池里Map(varName,varVal)1 1.3.1. 复合变量1 1.4. 变量类型简化: 字符串 数字,  bool1 1.5. 变量自动隐式转换2 1.6. 类型推导2 2. 参考 复合变量2 1.1. $ 美元字符, php 黑头 1.2. 默认变量的范围和声明