您的位置:首页 > 其它

Maven拆分聚合应用总结笔记

2020-04-01 12:10 211 查看

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服务器并启动


  • 点赞
  • 收藏
  • 分享
  • 文章举报
要学好Java 发布了67 篇原创文章 · 获赞 348 · 访问量 6万+ 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: