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工程的支持