Maven拆分聚合应用总结笔记

maven基础回顾


maven是一个项目管理工具
依赖管理:
对项目中jar包的管理,传统工程直接把jar包放置在项目中,maven工程中把jar包放在仓库中。

仓库的分类:
本地仓库、远程仓库(私服)、中央仓库

仓库间的关系:
启动一个maven工程时,maven工程会根据pom.xml文件中jar包坐标去本地仓库寻找,如果本地仓库没有,默认会自动去中央仓库下载jar包到本地仓库。
在公司中会先从私服下载jar包,如果私服没有可以从中央仓库下载或从本地上传。


一键构建:
maven自身集成了tomcat插件,可以对项目进行编译,测试,打包,安装,发布等操作。

常用命令:
clean 清理之前的构建信息
compile 对src/main/java下的代码编译
test 编译测试代码
package 打包本地项目到target目录下
install 把包安装到本地仓库
deploy 打包本地项目到私服

生命周期:
清理生命周期 clean
默认生命周期 compile->deploy
站点生命周期


构建SSM工程

创建数据库表

CREATE TABLE `items` (
  `id` INT(10) NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(20) DEFAULT NULL,
  `price` FLOAT(10,0) DEFAULT NULL,
  `pic` VARCHAR(40) DEFAULT NULL,
  `createtime` DATETIME DEFAULT NULL,
  `detail` VARCHAR(200) DEFAULT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;

INSERT INTO `items` VALUES ('1', '湖人球票', '1000', NULL, '2019-02-07 09:29:30', '湖人vs快船');
INSERT INTO `items` VALUES ('2', '科比球衣','599', NULL, '2018-03-28 10:05:52', 'rip');
INSERT INTO `items` VALUES ('3', 'N95口罩', '199', NULL, '2018-03-07 10:08:04', '买不到');

搭建环境

创建一个新的maven工程
在这里插入图片描述
在最后一步添加以下属性提高项目构建速度
在这里插入图片描述


当只导入以下依赖时,发现还出现了其他依赖的jar包,这种现象叫依赖传递
在这里插入图片描述
在这里插入图片描述


解决jar包冲突的方式
方式一 第一声明优先原则

哪个jar包靠上配置,它所依赖的包优先进入项目中
例:加入以下配置,发现有的包版本变为5.0.2
在这里插入图片描述
在这里插入图片描述

方式二 路径近优先原则
直接依赖路径比传递依赖路径近,最终进入项目的jar包是路径近的直接依赖包
直接依赖:项目中直接导入的jar包
传递依赖:项目中没有直接导入的jar包,通过直接依赖包传递到项目中
例:增加以下配置,发现版本变回5.2.1
在这里插入图片描述
在这里插入图片描述


方式三 排除依赖(推荐使用)

当我们要排除某个jar包下的依赖包时,在配置exclusion标签时可以不写版本号,因为此时依赖包所使用的版本默认和本jar包一样。
例:排除core包
在这里插入图片描述
在这里插入图片描述


锁定版本

面对众多的依赖,有一种方法不用考虑依赖路径、声明优化等因素可以采用直接锁定版
本的方法确定依赖构件的版本,版本锁定后则不考虑依赖的声明顺序或依赖的路径,以锁定
的版本的为准添加到工程中,此方法在企业开发中常用。
把版本号提取出来,使用<properties>标签设置成变量。

完整的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>com.sjh</groupId>
  <artifactId>maven</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>


  <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.version>5.2.1.RELEASE</spring.version>
    <slf4j.version>1.6.6</slf4j.version>
    <log4j.version>1.2.17</log4j.version>
    <shiro.version>1.2.3</shiro.version>
    <mysql.version>5.1.44</mysql.version>
    <mybatis.version>3.4.5</mybatis.version>
    <spring.security.version>5.2.1.RELEASE</spring.security.version>
  </properties>

  <dependencies>
    <!-- spring -->
    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjweaver</artifactId>
      <version>1.9.4</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</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-web</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-orm</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-core</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>${mysql.version}</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>jstl</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>
    <!-- log start -->
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>${log4j.version}</version>
    </dependency>
    <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>
    </dependency>
    <!-- log end -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>${mybatis.version}</version>
    </dependency>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.3.0</version>
    </dependency>
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.0.9</version>
    </dependency>
  </dependencies>
  
 
</project>


dao层代码编写

配置以下文件夹
在这里插入图片描述
创建对应数据库表的实体类Item

package com.pojo;

import java.util.Date;

public class Item {
    private Integer id;
    private String name;
    private Float price;
    private String pic;
    private Date createtime;
    private String detail;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Float getPrice() {
        return price;
    }

    public void setPrice(Float price) {
        this.price = price;
    }

    public String getPic() {
        return pic;
    }

    public void setPic(String pic) {
        this.pic = pic;
    }

    public Date getCreatetime() {
        return createtime;
    }

    public void setCreatetime(Date createtime) {
        this.createtime = createtime;
    }

    public String getDetail() {
        return detail;
    }

    public void setDetail(String detail) {
        this.detail = detail;
    }

    @Override
    public String toString() {
        return "Item{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", price=" + price +
                ", pic='" + pic + '\'' +
                ", createtime=" + createtime +
                ", detail='" + detail + '\'' +
                '}';
    }
}

在resouces目录下新建springConfig.xml配置文件,对dao层进行相关配置

<?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:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       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/aop
			    http://www.springframework.org/schema/aop/spring-aop.xsd
			    http://www.springframework.org/schema/tx
			    http://www.springframework.org/schema/tx/spring-tx.xsd
			    http://www.springframework.org/schema/mvc
			    http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!--配置dao层-->
    <!-- 1 配置数据源 -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql:///test?serverTimezone=UTC"/>
        <property name="username" value="root"/>
        <property name="password" value=""/>
    </bean>

    <!-- 2 配置sqlSession工厂生产sqlsession -->
    <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <!-- 扫描接口包路径,生成包下所有接口的代理对象,放入spring容器-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.dao"/>
    </bean>
    <!--配置dao层结束-->


</beans>

创建操作Item的dao接口

package com.dao;

import com.pojo.Item;
import org.apache.ibatis.annotations.Select;

public interface ItemDao {

    @Select("select * from items where id=#{id}")
    Item findById(int id);
}

创建测试类,进行测试

public class ItemTest {

    @Test
    public void findById(){
        ApplicationContext ac=new ClassPathXmlApplicationContext("springConfig.xml");
        ItemDao itemDao = ac.getBean(ItemDao.class);
        Item item = itemDao.findById(1);
        System.out.println(item);
    }
}

结果:
在这里插入图片描述


service层代码编写

service层的接口和实现类

public interface ItemService {

    Item findById(int id);
}
@Service
public class ItemServiceImpl implements ItemService {

    @Autowired
    private ItemDao itemDao;

    @Override
    public Item findById(int id) {
        return itemDao.findById(id);
    }
}


在springConfig.xml中增加对service层的配置

<!--配置service层-->
    <!-- 组件扫描 -->
    <context:component-scan base-package="com"/>
    <!--配置事务管理器 -->
    <bean id="tranManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
    </bean>
    <tx:advice id="interceptor" transaction-manager="tranManager">
        <tx:attributes>
            <tx:method name="find*" read-only="true"/>
            <!-- 除了查询外的增删改需要事务-->
            <tx:method name="update*" propagation="REQUIRED"/>
            <tx:method name="delete*" propagation="REQUIRED"/>
            <tx:method name="save*" propagation="REQUIRED"/>
        </tx:attributes>
    </tx:advice>
    <!-- 配置切面 -->
    <aop:config>
        <aop:pointcut id="pointcut" expression="execution(* com.service.*.*(..))"/>
        <aop:advisor advice-ref="interceptor" pointcut-ref="pointcut"/>
    </aop:config>
    <!--配置service层结束-->

在测试类中进行测试

@Test
    public void findById(){
        ApplicationContext ac=new ClassPathXmlApplicationContext("springConfig.xml");
        ItemService service = ac.getBean(ItemService.class);
        Item item = service.findById(1);
        System.out.println(item);
    }

在这里插入图片描述


web层代码编写

新建一个控制器类

@Controller
@RequestMapping("/items")
public class ItemController {

    @Autowired
    private ItemService itemService;

    @RequestMapping("/find")
    public String findById(Model model,int id){
        Item item = itemService.findById(id);
        model.addAttribute("item",item);
        return "itemDetail";
    }

}

前端index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"%>
<html>
<body>
<h2>Hello World!</h2>


<form action="items/find" method="post">
    输入要查询商品的id号:<input type="text" name="id"><br>
    <input type="submit">
</form>

</body>
</html>

在WEB-INF/pages下新建itemDetail.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"  prefix="fmt"%>    
 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body> 
	<form>
		<table width="100%" border=1>
			<tr>
				<td>商品名称</td>
				<td> ${item.name } </td>
			</tr>
			<tr>
				<td>商品价格</td>
				<td> ${item.price } </td>
			</tr>
			<tr>
				<td>生成日期</td>
				<td> <fmt:formatDate value="${item.createtime}" pattern="yyyy-MM-dd HH:mm:ss"/> </td>
			</tr>
			<tr>
				<td>商品简介</td>
				<td>${item.detail} </td>
			</tr>
		</table>
	</form>
</body>
</html>

配置mvc

<?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">

    <!-- 配置组件扫描 -->
    <context:component-scan base-package="com.controller"/>

    <!-- 配置处理器映射器和处理器适配器 -->
    <mvc:annotation-driven/>

    <!-- 配置视图解析器 -->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/pages/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

    <!-- 释放静态资源 -->
    <mvc:default-servlet-handler/>


</beans>

修改web.xml配置

 <!--配置编码过滤器 -->
  <filter>
    <filter-name>filter</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>filter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <!-- 配置前端控制器 -->
  <servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!-- 读取spring*.xml -->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring*.xml</param-value>
    </init-param>
    <!-- 启动后加载 -->
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <!-- 匹配除jsp之外的所有资源-->
    <url-pattern>/</url-pattern>
  </servlet-mapping>

配置tomcat服务器,启动测试
在这里插入图片描述
在这里插入图片描述


构建maven父子工程

传统maven工程存在的问题

继承是为了消除重复,如果将 dao、service、web 分开创建独立的工程则每个工程的 pom.xml文件中的内容存在重复,比如:设置编译版本、锁定 spring 的版本的等,可以将这些重复的配置提取出来在父工程的 pom.xml 中定义。
项目开发通常是分组分模块开发,每个模块开发完成要运行整个工程需要将每个模块聚合在
一起
运行,比如:dao、service、web 三个工程最终会打一个独立的 war 运行。


构建父子工程模块

新建一个maven工程,不需要使用骨架
在这里插入图片描述
可以将src目录删掉
在这里插入图片描述
右键maven_parent文件夹新建一个module,不需要使用骨架
在这里插入图片描述
可以看到新建的子模块的pom.xml文件具有parent标签
在这里插入图片描述
而父工程的pom.xml文件也多了module标签
在这里插入图片描述
依次再建立service和web的子模块(web模块需要使用webapp的骨架),可以删除web模块pom.xml文件中的多余部分,只保留以下模块
在这里插入图片描述
完整的父子工程结构
在这里插入图片描述


工程和模块的区别

  • 工程不等于完整的项目,模块也不等于完整的项目,一个完整的项目看的是代码是否完整
  • 工程初始只能使用自己内部的资源,是独立的,后面可以手动和其他工程和模块建立关系
  • 模块初始不是独立的,属于父工程,模块一旦创立,所有父工程的资源都能使用
  • 父子工程中,子模块初始集成父工程,可以使用父工程所有资源,但子模块之间初始不能互相使用资源,需要配置联系
  • 父子工程中不用建立关系,继承关系是先天的,不需要手动建立
  • 平级之间的引用叫依赖,依赖不是先天的,需要手动建立

在service层中引用dao的配置
在这里插入图片描述

在web中引用service的配置
在这里插入图片描述


把之前ssm项目的pom文件中依赖导入当前父工程的pom文件

<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.version>5.2.1.RELEASE</spring.version>
    <slf4j.version>1.6.6</slf4j.version>
    <log4j.version>1.2.17</log4j.version>
    <shiro.version>1.2.3</shiro.version>
    <mysql.version>5.1.44</mysql.version>
    <mybatis.version>3.4.5</mybatis.version>
    <spring.security.version>5.2.1.RELEASE</spring.security.version>
  </properties>

  <dependencies>
    <!-- spring -->
    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjweaver</artifactId>
      <version>1.9.4</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</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-web</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-orm</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-core</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>${mysql.version}</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>jstl</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>
    <!-- log start -->
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>${log4j.version}</version>
    </dependency>
    <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>
    </dependency>
    <!-- log end -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>${mybatis.version}</version>
    </dependency>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.3.0</version>
    </dependency>
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.0.9</version>
    </dependency>
  </dependencies>

引入dao层代码

将之前的dao包和pojo包以及关于dao的spring配置引入
在这里插入图片描述
spring-dao.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xsi:schemaLocation="http://www.springframework.org/schema/beans
			    http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!--配置dao层-->
    <!-- 1 配置数据源 -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql:///test?serverTimezone=UTC"/>
        <property name="username" value="root"/>
        <property name="password" value=""/>
    </bean>

    <!-- 2 配置sqlSession工厂生产sqlsession -->
    <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <!-- 扫描接口包路径,生成包下所有接口的代理对象,放入spring容器-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.dao"/>
    </bean>
    <!--配置dao层结束-->

</beans>

引入service层代码

将之前的service包以及关于service的spring配置引入
在这里插入图片描述
spring-service.xml

<?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:aop="http://www.springframework.org/schema/aop"
       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/aop
			    http://www.springframework.org/schema/aop/spring-aop.xsd
			    http://www.springframework.org/schema/tx
			    http://www.springframework.org/schema/tx/spring-tx.xsd">


    <!--配置service层-->
    <!-- 组件扫描 -->
    <context:component-scan base-package="com.service"/>
    <!--配置事务管理器 -->
    <bean id="tranManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>(这里报红不用管)
    </bean>
    <tx:advice id="interceptor" transaction-manager="tranManager">
        <tx:attributes>
            <tx:method name="find*" read-only="true"/>
            <!-- 除了查询外的增删改需要事务-->
            <tx:method name="update*" propagation="REQUIRED"/>
            <tx:method name="delete*" propagation="REQUIRED"/>
            <tx:method name="save*" propagation="REQUIRED"/>
        </tx:attributes>
    </tx:advice>
    <!-- 配置切面 -->
    <aop:config>
        <aop:pointcut id="pointcut" expression="execution(* com.service.*.*(..))"/>
        <aop:advisor advice-ref="interceptor" pointcut-ref="pointcut"/>
    </aop:config>
    <!--配置service层结束-->
</beans>

引入web层代码

将之前的controller包以及关于mvc的spring配置、前端页面、web.xml引入
在这里插入图片描述

在springmvc.xml中加入

	<!-- 引入service和dao的配置 -->
    <import resource="classpath:spring-dao.xml"/>
    <import resource="classpath:spring-service.xml"/>

测试

对maven_web子工程配置tomcat服务器并启动
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


发布了66 篇原创文章 · 获赞 302 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/qq_41112238/article/details/104208474