java模块化开发 maven_Maven - 模块化开发

本文介绍了如何利用Maven构建一个分层的Java Web项目,包括创建父项目和多个子模块如bean、mapper、service、web,并详细展示了各层的配置和依赖管理,以实现模块化的项目结构,提高代码维护性。
摘要由CSDN通过智能技术生成

在平时的Javaweb项目开发中为了便于后期的维护,我们一般会进行分层开发,最常见的就是分为domain/bean(域模型层)、dao/mapper(数据库访问层)、service(业务逻辑层)、web/controller(表现层),这样分层之后,各个层之间的职责会比较明确,后期维护起来也相对比较容易,今天我们就是使用Maven来构建以上的各个层。

项目结构如下:

Maven-ssm-base

|---- pom.xml

|---- Maven-ssm-bean

|---- pom.xml

|---- Maven-ssm-mapper

|---- pom.xml

|---- Maven-ssm-service

|---- pom.xml

|---- Maven-ssm-web

|---- pom.xml

eadeab3ef809f28f2218c2cc9c632212.png

一、创建父项目,在父项目中加入依赖

● 新建一个maven项目,选择存储位置,并选择创建一个简单的maven工程

3f9fcc72754ef91448e954fb0fbf7e49.png

● 输入Group Id、Artifact Id、Packaging,packaging选择pom包

fabfff7e9e911021a04dd1f810001ffc.png

● 生成父级工程

bfd86a00fde7a10bca2455eec837d406.png

● 在base父项目pom.xml中建立依赖管理

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

4.0.0

cn.alin

maven-ssm-base

0.0.1-SNAPSHOT

pom

5.0.8.RELEASE

3.4.6

1.3.2

5.1.46

12.1.0.2.0

1.0.16

1.0

1.6.4.RELEASE

1.1.1

1.2

1.2.16

1.6.1

1.6.4

1.3.1

2.9.6

8.5.32

8.5.32

3.8.0

2.2

org.springframework

spring-core

${spring.version}

org.springframework

spring-web

${spring.version}

org.springframework

spring-tx

${spring.version}

org.springframework

spring-jdbc

${spring.version}

org.springframework

spring-webmvc

${spring.version}

org.springframework

spring-aop

${spring.version}

org.springframework

spring-context-support

${spring.version}

org.springframework

spring-test

${spring.version}

org.mybatis

mybatis

${mybais.version}

org.mybatis

mybatis-spring

${mybatis-spring.version}

com.fasterxml.jackson.core

jackson-core

${jackson.version}

com.fasterxml.jackson.core

jackson-annotations

${jackson.version}

com.fasterxml.jackson.core

jackson-databind

${jackson.version}

org.springframework

spring-core

org.springframework

spring-web

org.springframework

spring-tx

org.springframework

spring-jdbc

org.springframework

spring-webmvc

org.springframework

spring-aop

org.springframework

spring-context-support

org.springframework

spring-test

org.mybatis

mybatis

org.mybatis

mybatis-spring

mysql

mysql-connector-java

${mysql-connector.version}

cn.easyproject

ojdbc7

${ojdbc7.version}

com.alibaba

druid

${druid.version}

aopalliance

aopalliance

${aopalliance.version}

org.aspectj

com.springsource.org.aspectj.weaver

${aspectj.weaver.version}

org.apache.commons

com.springsource.org.apache.commons.logging

${commons.logging.version}

javax.servlet

jstl

${jstl.version}

log4j

log4j

${log4j.version}

org.slf4j

slf4j-api

${slf4j-api.version}

org.slf4j

slf4j-nop

${slf4j-nop.version}

org.slf4j

slf4j-api

commons-fileupload

commons-fileupload

${fileupload.version}

com.fasterxml.jackson.core

jackson-databind

org.apache.tomcat

tomcat-servlet-api

${servlet-api.version}

provided

org.apache.tomcat

tomcat-jsp-api

${jsp-api.version}

provided

junit

junit

4.12

test

org.apache.maven.plugins

maven-compiler-plugin

${maven-compiler-plugin.version}

1.8

1.8

UTF-8

org.apache.tomcat.maven

tomcat7-maven-plugin

${tomcat7-maven-plugin.version}

http://localhost:8080/manager/text

alin

123123

src/main/java

**/*.properties

**/*.xml

false

src/main/resources

**/*.properties

**/*.xml

false

releases

http://localhost:8081/repository/maven-releases/

alin-snapshot

http://localhost:8081/repository/alin-snapshot/

mavem-ssm-mapper

maven-ssm-bean

maven-ssm-service

maven-ssm-controller

pom.xml

二、创建子模块

● 右击父工程名 -> New -> Project,然后选择新建一个Maven Module工程,【Next】

9cca968a2a765ae7cd9772b6cc54350c.png

● 设置子工程名以及父工程,勾选不使用模板创建,【Finish】

8bbdaf2b059f34965155c9fd275701c7.png

● 选择子项目打包方式为jar(一般非web层为jar包,web层为war包),然后点击【Finish】

f7b0d70bc71991faecd1c67a5440e01f.png

● 依次创建bean、mapper、service、controller子模块,并根据子模块所需创建配置文件

● 子项目创建完成 - 完成之后可以看到在父级目录中生成了子模块,里面包含src目录和pom.xml文件

2aed7aa31ab8ba311d46a2ac6fb82e90.png

● bean

d352d98ed920a91a7d8ec8c87fa7aa9c.png

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

4.0.0

cn.alin

maven-ssm-base

0.0.1-SNAPSHOT

maven-ssm-bean

pom.xml

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecn.alin.bean;public classUser {privateString username;privateString password;publicString getUsername() {returnusername;

}public voidsetUsername(String username) {this.username =username;

}publicString getPassword() {returnpassword;

}public voidsetPassword(String password) {this.password =password;

}

@OverridepublicString toString() {return "User [username=" + username + ", password=" + password + "]";

}

}

User.java

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecn.alin.bean;public classItemInfo {//id

privateString item_id;//name

privateString item_name;//type

privateString item_type;//price

privateDouble item_price;publicString getItem_id() {returnitem_id;

}public voidsetItem_id(String item_id) {this.item_id =item_id;

}publicString getItem_name() {returnitem_name;

}public voidsetItem_name(String item_name) {this.item_name =item_name;

}publicString getItem_type() {returnitem_type;

}public voidsetItem_type(String item_type) {this.item_type =item_type;

}publicDouble getItem_price() {returnitem_price;

}public voidsetItem_price(Double item_price) {this.item_price =item_price;

}

@OverridepublicString toString() {return "ItemInfo [item_id=" + item_id + ", item_name=" + item_name + ", item_type=" +item_type+ ", item_price=" + item_price + "]";

}

}

ItemInfo.java

● mapper

a9de91f6823aa8c1d40463e494e07cdc.png

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

4.0.0

cn.alin

maven-ssm-base

0.0.1-SNAPSHOT

mavem-ssm-mapper

cn.alin

maven-ssm-bean

0.0.1-SNAPSHOT

pom.xml

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecn.alin.mapper;importjava.util.List;importcn.alin.bean.ItemInfo;public interfaceItemMapper {

ListgetAllList();

}

ItemMapper.java

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

/p>

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

SELECT item_id,item_name,item_type,item_price

FROM item_info

ItemMapper.xml

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

jdbc.driverClass=com.mysql.jdbc.Driver

jdbc.jdbcUrl=jdbc:mysql://localhost:3306/ssm_springmvc?useUnicode=true&characterEncoding=utf-8&useSSL=true

jdbc.user=root

jdbc.password=123456

db.properties

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">

applicationContext_mapper.xml

● service

c64a328fe7b4f5cd71405f5050c370f9.png

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

4.0.0

cn.alin

maven-ssm-base

0.0.1-SNAPSHOT

maven-ssm-service

0.0.1

cn.alin

mavem-ssm-mapper

0.0.1-SNAPSHOT

pom.xml

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecn.alin.service;importjava.util.List;importcn.alin.bean.ItemInfo;public interfaceItemService {

ListgetAllList();

}

ItemService.java

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecn.alin.service;importjava.util.List;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Service;importcn.alin.bean.ItemInfo;importcn.alin.mapper.ItemMapper;

@Servicepublic class ItemServiceImpl implementsItemService {

@AutowiredprivateItemMapper itemMapper;

@Overridepublic ListgetAllList() {returnitemMapper.getAllList();

}

}

ItemServiceImpl.java

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">

applicationContext_service.xml

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd

http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd

http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">

applicationContext_transaction.xml

● controller - web层的打包方式是war

f58109088e38b71d65d840239d9060e9.png

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

4.0.0

cn.alin

maven-ssm-base

0.0.1-SNAPSHOT

cn.alin.maven-ssm

maven-ssm-controller

war

cn.alin

maven-ssm-service

0.0.1

pom.xml

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

packagecn.alin.controller;importjava.util.List;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Controller;importorg.springframework.ui.Model;importorg.springframework.web.bind.annotation.RequestMapping;importcn.alin.bean.ItemInfo;importcn.alin.bean.User;importcn.alin.service.ItemService;

@Controllerpublic classUserConteoller {

@AutowiredprivateItemService itemService;

@RequestMapping("/login2")publicString login(User user, Model model) {

System.err.println("user = " +user);

model.addAttribute("User", user);return "list";

}

@RequestMapping("/list2")publicString list(Model model) {

List itemList =itemService.getAllList();for(ItemInfo itemInfo : itemList) {

System.out.println("itemInfo = " +itemInfo);

}

model.addAttribute("itemList", itemList);return "item_list";

}

}

UserConteoller.java

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">

springmvc.xml

三、打包和发布

● 右击父工程名 -> Run As -> Maven build... -> clean tomcat7:deploy 或 clean tomcat7:redeploy

f5b6438d1266bd8798de4e644ca816e7.png

【run】部署项目

fcc0460de5d680fcd2af19435e2a10ba.png

● 部署成功 - 访问http://localhost:8080/maven-ssm-controller测试

85ba6bdbef93a2c0f84a2da47f597980.png

f87a1c707589a1e315b6e3c0a553477e.png

a4ddc771a78ecddf0ecc64cc10144eef.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值