使用IJ idea,基于Action,Service,Dao分层,搭建SSh环境 ,学习maven的简单案例;
一共需要建立4个子模块
erp_domain 存放实体包
erp_dao 存放数据访问接口及实现类
erp_service 存放业务逻辑层接口及实现类
erp_web 存放action类代码和前端代码 (注意:此模块的packaging选择war)
以及一个父模块 (pom)
在erp_web工程中展开src\main\webapp目录,建立WEB-INF文件夹,并将web.xml拷贝到文件夹中。
通过以下方式依次创建 子模块.-------------------<
如果没有Parent 请通过 GroupId 添加便可.(好像有BUG 不会解决)
下图展示的 该项目的Dao层,依赖于Domain实体
各模块的依赖关系如下:
erp_dao 依赖erp_domain
erp_service 依赖erp_dao
erp_web依赖erp_service
使用Ij Idea 可以根据parent 自动添加,Eclipse 需要手动添加denpency.
如果将spring application 进行了拆分,需要进行下述配置,其子模块 实质上是以jar包的模式被父模块引用
运行测试及打包
选择erp_parent工程,执行命令package进行打包(war)
这里我们需要注意一点,我们在将配置文件分到每个子模块后,打成的war包中不并包括其它jar工程的配置文件,这些jar工程的配置文件被直接打到jar包中,这时web.xml中下列配置就可以找到这些jar包中的配置文件:
<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:applicationContext*.xml</param-value> </context-param> |
classpath 和 classpath* 区别:
classpath:只会到你指定的class路径中查找找文件;
classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找.
其中间接依赖 注意serlvetAPI ,这个的scope属性记得配置成 provided,因为当时TOMCAT容器组件进行加载的时候,自带一个Servlet,会造成冲突,
只需要编译时期使用.
在如整合SSH中,出现jar 包冲突的情况,(Struts2,与hibernate 的javasist) ,配置下述代码,令一方不引入该冲突jar包就行
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.3.24</version>
<exclusions>
<exclusion>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
</exclusion>
</exclusions>
</dependency>
<scope>test</scope>