Fork me on GitHub

maven

Maven

摘要:在会使用maven的基础上进行了补充说明。

maven的补充说明:

关于maven,主要解决了两个问题:层次依赖问题、jar包管理问题

  层次依赖:当使用了springboot以后,我们的开发可能是将maven项目进行了拆分,具体在下面的springboot里细说,

  当service需要调用Mapper(dao层)的时候,由于两个层被拆分成两个工程了,所以出现了跨域的问题,为了解决跨域的

  问题,则建立工程依赖,即在service工程中的xml得依赖里引入Mapper,这就是层次上的依赖;

  jar包管理问题:当两个层次都引入某个jar包时,就出现了jar冗余,我们只需要让父工程引入此jar包,Mapper继承此jar包,

  由于service依赖Mapper,所以service不用再引入此jar包也可以使用。

 

使用maven的父子工程的原因:

便于分布式的开发!

 父工程:所有的maven的父工程都是来管理jar包的,里面不会出现任何一行实质性的代码,且不再需要src这个文件。

 

图上的Mapper(dao)、model(entity)、service、web(controller)等是在建好父工程后,在父工程的基础上新建的maven项目,属于parent的子工程,在父工程的pom.xml中引入的jar包,

子工程都能用。并且我们能够看到在父工程的pom.xml里面有<modules>标签,里面列举了所有的子工程。

 

父子工程的特点:

  1、父工程并没有实质性的内容,所有的jar包都在里面,也就是说只是管理jar包,不参与任何逻辑。

  2、在父工程中拥有很多字模块,每一个子模块都代表了不同的包。而且父工程中拥有的jar包都会被子工程所继承。

  3、有些jar包在父工程中引入了,但是部分模块不需要这些jar包,如果这些模块去加载那些用不到的jar包,无疑会影响项目的运行速度,

    针对此问题,我们可以在父工程中使用<dependencyManagement>标签来管理jar包,被<dependencyManagement>管理的jar包不会被子工程所继承,

    如果子工程需要用的时候,可以在子工程中的xml文件中进行重写此依赖,但是不能携带版本号,否则相当于是从中央仓库上进行了下载。

 

 注意:在子工程的model(entity)层写实体类时,实体类的标准:

    1、实现序列化接口

    2、重写hashCode和equals方法(选择idea default)

    3、重写toString方法

    4、get和set方法,

    5、在实体类中所有属性的类型都要求是包装类型,不能使用基本数据类型,因为包装类型可以防止空指针异常(无值的时候自动会有个null);

使用工程依赖建立层级依赖的例子:

  eg:在service工程中引入Mapper工程的依赖:这样service工程就会依赖于mapper工程的支持

 

  

 

posted @ 2019-08-15 21:29  秋刀  阅读(126)  评论(0编辑  收藏  举报