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