1.为什么要搭建多模块?
随着项目的进行,我们可能遇到下面一系列的问题:
(1) 大部分的domain或者一些service以及mapper在多个项目中是通用的
(2) Pom.xml中的依赖越来越长
(3) Build整个项目的时间越来越长,尽管你只是一直在web层工作,但是不得不build整个项目
(4) 某个模块,比如mapper,你只想让一些经验丰富的人来维护,但是现在每个开发者都能修改这个模块,这导致关键模块的代码质量达不到你的要求。
一个大项目拆分为多个小项目(maven模块)组成,而且它们是有依赖关系的.
2.进行搭建
下面以crm客户管理系统为案例进行搭建 :
2.1引用依赖关系:
–>:表示依赖谁
eg:crm_web–>crm_service即为crm_web 依赖于crm_service
crm_web -->crm_service
crm_service–>crm_mapper
crm_mapper–>crm_common
crm_common–>basic_core
basic_core->basic_util
2.2配置文件对应的模块
–>:表示哪个包对应的模块配置文件
eg:web.xml -->crm_web表示在crm_web模块下写web.xml文件
web.xml -->crm_web
applicationContext-mvc.xml–>crm_web
applicationContext.xml -->crm_service
db.properties–>crm_service/crm_mapper
2.3导入jar包关系
crm_parent: 公共的spring的包
crm_web: spring-web spring-webmvc
crm_service: 引用crm_mapper
crm_mapper: mybatis dbcp 等
2.4搭建项目
(1)新建普通maven项目当作整个项目的父模块:
File–>New–>Project
(2)选择Maven 然后直接Next
(3)填写项目名,然后直接Finish
(4)创建好普通Maven项目后,开始配置父模块的pom.xml,直接拷贝
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.itsource</groupId>
<artifactId>crm_background</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>basic-util</module>
<module>basic-core</module>
<module>crm-common</module>
<module>crm-mapper</module>
<module>crm-service</module>
<module>crm-web</module>
</modules>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<!-- spring版本号 -->
<spring.version>4.1.2.RELEASE</spring.version>
<!-- mybatis版本号 -->
<mybatis.version>3.2.1</mybatis.version>
<!-- log4j日志文件管理包版本 -->
<slf4j.version>1.7.2</slf4j.version>
<log4j.version>1.2.17</log4j.version>
<!-- jackson包版本 -->
<jackson.version>2.5.0</jackson.version>
<!-- swagger版本号-->
<springfox.version>2.4.0</springfox.version>
</properties>
<dependencies>
<!--Spring核心-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
<!--aop依赖包-->
<dependency>
<groupId>aopalliance</groupId>
<artifactId>aopalliance</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.6.8</version>
</dependency>
</dependencies>
</project>
红色框中部分 改成你的项目名称和包名即可
(5)配制好父模块的pom.xml后,便可以根据2中模块结构开始搭建子模块。
选中父模块,然后右键,New–>Module
在弹出的 界面中 ,继续选择 Maven,除了最后一个 crm-Web是创建web模块以外,其余的都创建普通Maven模块即可
下面是Web模块创建方式:
再填入子模块的名字
Next,选择好代码仓库存放位置后Finish即可
等所有子模块都创建完后,项目大致是这样子的
(5)这时我们需要分别去配置各个子模块的 依赖关系以及创建相应的包以及类 。
首先是crm-util(工具类)
pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>crm_background</artifactId>
<groupId>cn.itsource</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>basic-util</artifactId>
</project>
项目结构如下 :
AjaxResult.java:用于封装处理前端返回的数据
package cn.itsource.basic.util;
public class AjaxResult {
private boolean Success = true;
private String msg = "";
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public boolean isSuccess() {
return Success;
}
public void setSuccess(boolean success) {
Success = success;
}
/*操作成功调用*/
public AjaxResult() {
this.msg = "操作成功";
}
/*操作失败调用*/
public AjaxResult(String msg) {
this.Success = false;
this.msg = msg;
}
}
PageList.java:用于做数据表格 分页
package cn.itsource.basic.util;
import java.util.ArrayList;
import java.util.List;
public class PageList<T> {
/*总条数*/
private Long total =0L;
/*当前页条数*/
private List<T> rows = new ArrayList<T>();
public Long getTotal() {
return total;
}
public void setTotal(Long total) {
this.total = total;
}
public List<T> getRows() {
return rows;
}
public void setRows(List<T> rows) {
this.rows = rows;
}
public PageList(Long total, List<T> rows) {
this.total = total;
this.rows = rows;
}
public PageList() {
}
}
(6)接下来是crm-core(用于存放抽取的基类数据)
pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>crm_background</artifactId>
<groupId>cn.itsource</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>basic-core</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<!--加入util的依赖-->
<dependency>
<groupId>cn.itsource</groupId>
<artifactId>basic-util</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
BaseDomain(封装公有实体数据):
package cn.itsource.basic.domain;
public class BaseDomain {
private Long id;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
BaseMapper(公有增删改查 CRUD方法):
package cn.itsource.basic.mapper;
import java.io.Serializable;
import java.util.List;
public interface BaseMapper<T>{
/**
* 增添数据
* @param t
*/
void save(T t);
/**
* 修改数据
* @param t
*/
void update(T t);
/**
* 根据删除数据
* @param id
*/
void delete(Serializable id);
/**
* 查询全部数据
* @return
*/
List<T> queryAll();
/**
* 根据id查询数据
* @param id
* @return
*/
T queryOne(Serializable id);
}
BaseQuery:
package cn.itsource.basic.query;
public class BaseQuery {
private Long page;
public Long getPage() {
return page;
}
public void setPage(Long page) {
this.page = page;
}
}
BaseService(公有service层):
package cn.itsource.basic.service;
import java.io.Serializable;
import java.util.List;
public interface BaseService<T> {
/**
* 增添数据
* @param t
*/
void save(T t);
/**
* 修改数据
* @param t
*/
void update(T t);
/**
* 根据删除数据
* @param id
*/
void delete(Serializable id);
/**
* 查询全部数据
* @return
*/
List<T> queryAll();
/**
* 根据id查询数据
* @param id
* @return
*/
T queryOne(Serializable id);
}
BaseServiceImpl(公有Service层实现类):
package cn.itsource.basic.service.impl;
import cn.itsource.basic.mapper.BaseMapper;
import cn.itsource.basic.service.BaseService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.io.Serializable;
import java.util.List;
@Transactional(propagation = Propagation.SUPPORTS,readOnly = false)
public class BaseServiceImpl<T> implements BaseService<T> {
@Autowired
private BaseMapper<T> baseMapper;
@Override
@Transactional
public void save(T t) {
baseMapper.save(t);
}
@Override
@Transactional
public void update(T t) {
baseMapper.update(t);
}
@Override
@Transactional
public void delete(Serializable id) {
baseMapper.delete(id);
}
@Override
public List<T> queryAll() {
return baseMapper.queryAll();
}
@Override
public T queryOne(Serializable id) {
return baseMapper.queryOne(id);
}
}
(7)接下来是 crm-common
pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>crm_background</artifactId>
<groupId>cn.itsource</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>crm-common</artifactId>
<dependencies>
<dependency>
<groupId>cn.itsource</groupId>
<artifactId>basic-core</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
子模块结构:
User.java(实体):
package cn.itsource.crm.common.domain;
import cn.itsource.basic.domain.BaseDomain;
public class User extends BaseDomain {
private String username;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
UserQuery.java(高级查询):
package cn.itsource.crm.common.query;
import cn.itsource.basic.query.BaseQuery;
public class UserQuery extends BaseQuery {
}
(8)然后是 crm-mapper:
pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>crm_background</artifactId>
<groupId>cn.itsource</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>crm-mapper</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<!--Mybatis集成-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.2.0</version>
</dependency>
<!--log4j-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j.version}</version>
</dependency>
<!--slf4j-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
<scope>test</scope>
</dependency>
<!--数据库连接驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
<!--数据库连接池-->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>commons-pool</groupId>
<artifactId>commons-pool</artifactId>
<version>1.5.3</version>
</dependency>
<!--依赖common层-->
<dependency>
<groupId>cn.itsource</groupId>
<artifactId>crm-common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
子模块结构:
UserMapper.java:
package cn.itsource.crm.mapper;
import cn.itsource.basic.mapper.BaseMapper;
import cn.itsource.crm.common.domain.User;
public interface UserMapper extends BaseMapper<User> {
}
UserMapper.xml(sql语句,且一定要和UserMapper出于 同种类型包名下):
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.itsource.crm.mapper.UserMapper">
<!--查询所有-->
<select id="queryAll" resultType="User">
select * from t_user
</select>
<!--根据id查询用户-->
<select id="queryOne" resultType="User" parameterType="long">
select * from t_user
<where>
<if test="id!=null||id!=''">
id =#{id}
</if>
</where>
</select>
<!--保存用户-->
<insert id="save" parameterType="user">
insert into t_user(username) values(#{username})
</insert>
<!--修改用户-->
<update id="update" parameterType="user">
update t_user set username = #{username}
<where>
<if test="user.id!=null||user.id!=''">
id = #{id}
</if>
</where>
</update>
<!--删除用户-->
<delete id="delete" parameterType="long">
delete from t_user
<where>
<if test="id!=null || id!=''">
id = #{id}
</if>
</where>
</delete>
</mapper>
(9)随即是 crm-service:
pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>crm_background</artifactId>
<groupId>cn.itsource</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>crm-service</artifactId>
<dependencies>
<dependency>
<groupId>cn.itsource</groupId>
<artifactId>crm-mapper</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
子模块结构:
IUserService.java接口:
package cn.itsource.crm.service;
import cn.itsource.basic.service.BaseService;
import cn.itsource.crm.common.domain.User;
public interface IUserService extends BaseService<User> {
}
UserServiceImpl.java实现类:
package cn.itsource.crm.service.impl;
import cn.itsource.basic.service.impl.BaseServiceImpl;
import cn.itsource.crm.common.domain.User;
import cn.itsource.crm.service.IUserService;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl extends BaseServiceImpl<User> implements IUserService {
}
resources下的 applicationContext.xml(spring核心配置):
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
<!--扫描的包-->
<context:component-scan base-package="cn.itsource.crm.service"/>
<!-- Jdbc配置文件 -->
<context:property-placeholder location="classpath:db.properties" />
<!-- 数据源dataSource -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<!--Mybatis核心对象-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 注入数据源 -->
<property name="dataSource" ref="dataSource" />
<!-- 配置mybatis (mapper)映射器路径 -->
<property name="mapperLocations" value="classpath*:cn/itsource/crm/mapper/*Mapper.xml" />
<!-- 配置mybatis 类型别名 -->
<property name="typeAliasesPackage">
<value>
cn.itsource.crm.common.domain
cn.itsource.crm.common.query
</value>
</property>
</bean>
<!--注入映射器,一劳永逸的做法-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="cn.itsource.crm.mapper"></property>
</bean>
<!--事务管理-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!--以注解的方式进行事务管理-->
<tx:annotation-driven transaction-manager="transactionManager"/>
</beans>
db.properties(数据库连接四大金刚):
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///ssm?useUnicode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=123456
log4j.properties日志信息:
log4j.rootLogger=ERROR, stdout
#log4j.rootLogger=NONE
log4j.logger.cn.itsource=TRACE
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
(10)最后则是crm-web:
pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>crm_background</artifactId>
<groupId>cn.itsource</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>crm-web</artifactId>
<packaging>war</packaging>
<name>crm-web Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>cn.itsource</groupId>
<artifactId>crm-service</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!--SpringMVC-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<!--文件上传-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.2</version>
</dependency>
<!--jackson-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson.version}</version>
</dependency>
<!-- JSTL标签类 -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!--servlet-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!--swagger配置-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${springfox.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${springfox.version}</version>
</dependency>
</dependencies>
</project>
子模块结构:
SwaggerConfig.java(此类可以为前端生成接口):
package cn.itsource.crm.web.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration //相当于写了spring配置 applicationContext.xml
@EnableWebMvc //开启webmvc
@EnableSwagger2 //开启swagger
//扫描个包下面controller来生成接口描述
@ComponentScan(basePackages="cn.itsource.crm.web.controller")
public class SwaggerConfig {
//<bean class=""></bean>
@Bean
public Docket api(){
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(this.apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("cn.itsource.crm.web.controller"))
.paths(PathSelectors.any())
.build();
}
//描述信息
private ApiInfo apiInfo(){
@SuppressWarnings("deprecation")
ApiInfo info=new ApiInfo(
"itsource20190924crud测试",
"一个完成crud",
"v1",
"http://www.itsource.cn",
"zytest",
"apache",
"http://www.itsource.cn");
return info;
}
}
UserController.java
package cn.itsource.crm.web.controller;
import cn.itsource.basic.util.AjaxResult;
import cn.itsource.crm.common.domain.User;
import cn.itsource.crm.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private IUserService userService;
//restfull风格查询全部
@RequestMapping(value="/list",method = RequestMethod.PATCH)
@ResponseBody
public List<User> queryAll(){
return userService.queryAll();
}
//restfull风格查询单个
@RequestMapping(value = "/query/{id}",method = RequestMethod.GET)
@ResponseBody
public AjaxResult queryOne(@PathVariable("id") Long id){
System.out.println("查询数据");
System.out.println("查询的id:"+id);
return new AjaxResult();
}
//restfull风格增添
@RequestMapping(value = "/save",method = RequestMethod.PUT)
@ResponseBody
public AjaxResult save(@RequestBody User u){
System.out.println("新增用户");
System.out.println("新增的用户"+u);
return new AjaxResult();
}
//restfull风格修改
@RequestMapping(value = "/update",method = RequestMethod.POST)
@ResponseBody
public AjaxResult update(@RequestBody User u){
System.out.println("修改用户");
System.out.println("修改的用户"+u);
return new AjaxResult();
}
@RequestMapping(value = "/delete/{id}",method = RequestMethod.DELETE)
@ResponseBody
public AjaxResult delete(@PathVariable("id") Long id){
System.out.println("删除数据");
System.out.println("删除的id:"+id);
return new AjaxResult();
}
}
resources下的applicationContext-mvc.xml(SpringMVC核心配置):
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 -->
<context:component-scan base-package="cn.itsource.crm.web.controller" />
<!--扫描swagger配置-->
<context:component-scan base-package="cn.itsource.crm.web.config"/>
<!-- 启动SpringMVC的注解功能 @RequestMapper -->
<mvc:annotation-driven/>
<!--静态资源放行-->
<mvc:default-servlet-handler/>
<!-- 定义跳转的文件的前后缀 ,视图解析器配置-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
</bean>
<!-- 配置文件上传解析器 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 默认编码 -->
<property name="defaultEncoding" value="utf-8" />
<!-- 文件大小最大值 -->
<property name="maxUploadSize" value="10485760000" />
</bean>
</beans>
最后是web.xml:
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<display-name>ssm</display-name>
<!-- Spring的配置文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!--Spring监听器 ApplicationContext 载入 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- Spring MVC 核心配置开始 -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- 编码过滤器 -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
至此,整个 分模块项目就搭建好了。