以图片为例:一个简单基础的多模块:
basic_core:引入抽取的概念,讲经常使用到的比如id,或者name等一些字段抽取到公共,对于使用这些属性的类直接继承相应的Base就行,减少重复代码。相当于修房子在现场的钢筋加工房,因为会经常用
basic_util:将之前写在一个包里面的工具类直接变为一个工具模块,所有需要使用到的工具类都放在这里面,统一管理,减少耦合性,便于维护管理
crm_common:公共的一个模块,需要的私有化字段,get set,tostring都写到这里,一般情况下写了就不会再改,它相当于修房子的地基
后面三层一起说:
这三层就是最开始基础学习的controller——service——dao
现在引入web模块,也是最重要的模块之一,它是连接前后端的一个模块,它主要是三个功能,接收来自前台的请求,处理请求,响应(返回)请求。
service模块是连接web和mapper,也是处理数据的模块,我们常说的CRUD就是在这一层完成
mapper模块可以粗虐认为是以前的dao层,都是操作数据库的,只是说mapper使用mybatis,在sql语句上更灵活,操作数据库更灵活,功能更加强大,但是对于sql能力要求更高
比如前台收入地址,…/potentialcustomer/list web模块的controller里根据路径会走到查询全部这个方法,后端就接收到了请求,然后如果没有权限限制的话(处理请求),将数据传给service,service对数据进行处理,比如前台是发送的增加请求,于是就调用增加方法,如果在这里面需要使用到的一些功能需要用到工具类,就会调用basic_util里相对应的工具类。service处理完后再传给mapper,mapper通过对应的sql操作数据库,数据库将处理好后的数据返回mapper,再到service,再到web,然后返回前台,同时数据库也改变了。
而@Autowired注解就是注入,比如controller要传给service,那就是在controller里注入service,然后service调用就传回了,相当于你要把公司数据,东西给对方公司,于是对方派了一个员工长期进驻在我们公司,进行各种操作。
因此多模块三层架构的整体流程是,前台数据过来,web的conteoller接收,在经过权限或其他处理后交给service,service对数据进行处理,基础的CRUD都在这,包括工具类的使用也基本在service层,然后再交给mapper(dao),进行数据库操作处理,在数据库完成操作后返回service(如果不需要对数据库操作可直接service处理后返回controller),返回后controller再将数据给前台。
根据流程如果发生报错,比如数据库每隔改变那就可以在mapper,service查找,如果是数据都好了最后返回不了前台,就在controller查找
一个java的初学者!继续前行!