Maven技術(二)

一、Maven構建SSM項目

1.1 項目準備

第一步:構建Maven工程。

選擇菜單New > Project > Maven Project。
在這裏插入圖片描述
選擇maven-archetype-webapp類型骨架。
在這裏插入圖片描述
輸入項目groupId、artifactId等信息後點擊Finish即可。

構建完成後,打開pom.xml文件,添加相關依賴和插件。

<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.xjy</groupId>
	<artifactId>maventest</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>war</packaging>

	<!-- 集中定義依賴版本號 -->
	<properties>
		<spring.version>4.2.4.RELEASE</spring.version>
		<junit.version>4.9</junit.version>
		<mybatis.version>3.4.6</mybatis.version>
		<mysql.version>5.1.22</mysql.version>
		<mybatis-spring.version>1.3.2</mybatis-spring.version>
	</properties>

	<!-- 配置依賴關係 -->
	<dependencies>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<!-- 整合MyBatis依賴的jar包 -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>${mybatis.version}</version>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>${mysql.version}</version>
		</dependency>
		<!-- MyBatis和Spring整合所依賴的jar包 -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
		<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-orm</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>${mybatis-spring.version}</version>
		</dependency>
		<!-- 單元測試 -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>${junit.version}</version>
		</dependency>
	</dependencies>

	<build>
		<finalName>${project.artifactId}</finalName>
		<plugins>
			<!-- java編譯插件 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.2</version>
				<configuration>
					<source>1.7</source>
					<target>1.7</target>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

第二步:創建數據庫表;

create table user(
	id int primary key auto_increment, 
	name varchar(255) not null default '',
	age int not nul default 0
);

第三步:創建實體;

package ssmtest.beans;

public class User {
	private Integer id;
	private String name;
	private Integer age;

	// 省略了setters和getters方法...
}

第四步:定義映射接口;

@Repository
public interface UserMapper {
	
}

第五步:新建業務接口和實現類,並且在業務類中注入映射接口;

業務接口:

package ssmtest.service;

public interface IUserService {

}

實現類:

package ssmtest.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import ssmtest.mapper.UserMapper;
import ssmtest.service.IUserService;

@Service
public class UserServiceImpl implements IUserService {
	@Autowired
	private UserMapper userMapper;
	
}

第六步:新建一個控制器類,並且把業務類注入到該控制器中;

package ssmtest.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import ssmtest.service.IUserService;

@Controller
public class UserController {
	@Autowired
	private IUserService userService;
	
}

第七步:在src/main/resources目錄下創建spring配置文件,名稱爲applicationContext.xml,並啓用註解和包掃描功能;

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	   xmlns:mvc="http://www.springframework.org/schema/mvc"
	   xmlns:context="http://www.springframework.org/schema/context"
       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
      					 http://www.springframework.org/schema/mvc
      					 http://www.springframework.org/schema/mvc/spring-mvc.xsd
      					 http://www.springframework.org/schema/context
      					 http://www.springframework.org/schema/context/spring-context.xsd">		 
      <!-- 啓動註解功能 -->
      <mvc:annotation-driven/>
      <!-- 啓用報掃描功能 -->
      <context:component-scan base-package="ssmtest" />  
</beans>

第八步:在web.xml文件中配置springmvc核心控制器和spring容器;

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://xmlns.jcp.org/xml/ns/javaee"
	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
	id="WebApp_ID" version="3.1">

	<!-- 指定Spring配置文件路徑 -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:applicationContext.xml</param-value>
	</context-param>

	<!-- 加載Spring容器 -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

	<!-- springmvc核心控制器 -->
	<!-- 配置Spring的核心控制器 -->
	<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.xml</param-value>
		</init-param>
	</servlet>
	<servlet-mapping>
		<servlet-name>SpringMVC</servlet-name>
		<url-pattern>/*</url-pattern>
	</servlet-mapping>
	
</web-app>

上面配置指定springmvc配置文件的路徑與spring配置文件路徑相同。

1.2 整合SSM

第一步:配置數據源;

<bean id="dataSource"
	class="org.springframework.jdbc.datasource.DriverManagerDataSource">
	<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
	<property name="url" value="jdbc:mysql://localhost:3306/test"></property>
	<property name="username" value="root"></property>
	<property name="password" value="root"></property>
</bean>

第二步:配置SqlSessionFactory;

<bean name="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
	<property name="dataSource" ref="dataSource" />
</bean>

第三步:配置Mapper掃描器;

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
	<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
	<property name="basePackage" value="ssmtest.mapper"></property>
</bean>

第四步:配置事務管理器;

<bean id="transactionManager"
	class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
	<property name="dataSource" ref="dataSource" />
</bean>

<!-- 開啓事務註解功能 -->
<tx:annotation-driven transaction-manager="transactionManager"/>

上面開啓事務註解功能的時候使用了tx命名空間下的annotation-driven標籤,所以需要引入該命名空間。
在這裏插入圖片描述

第五步:配置視圖解析器;

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	<property name="prefix" value="/WEB-INF/jsp/" />
	<property name="suffix" value=".jsp" />
</bean>

1.3 測試

第一步:修改Mapper接口,定義一個addUser方法,然後在註解上指定添加用戶的sql命令;

@Insert("insert into user(name, age) values(#{name}, #{age})")
void addUser(User user);

第二步:在Service接口中提供addUser方法,然後在Service實現類中實現該方法;

// 定義接口方法
void addUser(User user);

// 在實現類中實現該方法
@Override
public void addUser(User user) {
	userMapper.addUser(user);
}

第三步:在UserController中定義一個方法,該方法調用Service的addUser方法,實現添加用戶功能。

@RequestMapping(path="/saveUser", produces={"text/html;charset=utf-8"})
@ResponseBody
public String saveUser() {
	System.out.println("saveUser...");
	User user = new User();
	user.setName("jacky");
	user.setAge(18);
	userService.addUser(user);
	return "添加成功";
}

第四步:啓動服務器。
在這裏插入圖片描述
啓動成功後,在瀏覽器輸入地址localhost:8080/maventest/saveUser。如果運行後控制檯沒有出現錯誤提示,而且查看數據庫表中也有新增用戶的記錄,代表整合成功。
在這裏插入圖片描述

二、分模塊構建項目

2.1 多模塊和繼承

多模塊:把一個項目拆分成多個不同的模塊。
繼承:子項目和父項目之間的關係。
在這裏插入圖片描述
我們可以把之前的SSM項目拆分成多個模塊開發。例如:dao模塊、service模塊、web模塊等等。

2.2 maventest-parent父模塊

該模塊是其他模塊的父模塊,主要用於把各個子模塊的一些重複配置抽取出來,進行統一管理。例如:統一管理版本號。

第一步:創建父工程。
在這裏插入圖片描述
選擇打包方式爲pom。
在這裏插入圖片描述

第二步:定義pom。

<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.xjy</groupId>
	<artifactId>maventest-parent</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>pom</packaging>

	<!-- 集中定義依賴版本號 -->
	<properties>
		<spring.version>4.2.4.RELEASE</spring.version>
		<junit.version>4.9</junit.version>
		<mybatis.version>3.4.6</mybatis.version>
		<mysql.version>5.1.22</mysql.version>
		<mybatis-spring.version>1.3.2</mybatis-spring.version>
	</properties>

	<!-- 配置依賴關係 -->
	<dependencies>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<!-- 整合MyBatis依賴的jar包 -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>${mybatis.version}</version>
		</dependency>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>${mysql.version}</version>
		</dependency>
		<!-- MyBatis和Spring整合所依賴的jar包 -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-orm</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>${mybatis-spring.version}</version>
		</dependency>
		<!-- 單元測試 -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>${junit.version}</version>
		</dependency>
	</dependencies>

	<build>
		<finalName>${project.artifactId}</finalName>
		<plugins>
			<!-- java編譯插件 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.2</version>
				<configuration>
					<source>1.7</source>
					<target>1.7</target>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

第三步:把父工程發佈到本地倉庫。

執行maven-install命令將父工程發佈到倉庫中,方便其他子工程繼承。
在這裏插入圖片描述

2.3 maventest-dao子模塊

第一步:鼠標右鍵選擇maventest-parent工程,然後選擇Maven Module構建子模塊。
在這裏插入圖片描述
選擇打包方式爲jar。
在這裏插入圖片描述

第二步:創建實體類。

public class User {
	private Integer id;
	private String name;
	private Integer age;

	// 省略了setter和getter方法...
}

第三步:創建映射接口。

@Repository
public interface UserMapper {

	@Insert("insert into user(name, age) values(#{name}, #{age})")
	void addUser(User user);
	
}

2.4 maventest-service子模塊

第一步:創建maven-parent工程的子模塊。創建方法與maventest-dao模塊的創建方法相同,模塊名爲maventest-service。

第二步:添加對maventest-dao子模塊的依賴:

<!-- 依賴dao -->
<dependency>
	<groupId>com.xjy</groupId>
    <artifactId>maventest-dao</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>

第三步:創建Service接口和實現類;

// service接口
public interface IUserService {
	void addUser(User user);
}

// service實現類
@Service
public class UserServiceImpl implements IUserService {

	@Autowired
	private UserMapper userMapper;

	@Override
	public void addUser(User user) {
		userMapper.addUser(user);
	}

}

2.5 構建maventest-web子模塊

第一步:創建方法與maventest-dao模塊的創建方法相同,模塊名爲maven-crm-service。

注意:打包方式(packaging)應該選擇war。

第二步:添加對maventest-service模塊的依賴。

<dependency>
	<groupId>com.xjy</groupId>
    <artifactId>maventest-service</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>

第三步:把上面項目的web.xml文件拷貝過來,覆蓋該項目的web.xml文件。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://xmlns.jcp.org/xml/ns/javaee"
	xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
	id="WebApp_ID" version="3.1">

	<!-- 指定Spring配置文件路徑 -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:applicationContext.xml</param-value>
	</context-param>

	<!-- 加載Spring容器 -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

	<!-- springmvc核心控制器 -->
	<!-- 配置Spring的核心控制器 -->
	<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.xml</param-value>
		</init-param>
	</servlet>
	<servlet-mapping>
		<servlet-name>SpringMVC</servlet-name>
		<url-pattern>/*</url-pattern>
	</servlet-mapping>
	
</web-app>

第四步:把上面項目的applicationContext.xml文件拷貝到當前項目的src/main/resources目錄下。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:tx="http://www.springframework.org/schema/tx" 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
      					 http://www.springframework.org/schema/mvc
      					 http://www.springframework.org/schema/mvc/spring-mvc.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">
	<!-- 啓動註解功能 -->
	<mvc:annotation-driven />

	<!-- 啓用報掃描功能 -->
	<context:component-scan base-package="com.xjy" />

	<bean id="dataSource"
		class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
		<property name="url" value="jdbc:mysql://localhost:3306/test"></property>
		<property name="username" value="root"></property>
		<property name="password" value="root"></property>
	</bean>

	<bean name="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource" />
	</bean>

	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
		<property name="basePackage" value="com.xjy.mapper"></property>
	</bean>

	<bean id="transactionManager"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource" />
	</bean>

	<!-- 開啓事務註解功能 -->
	<tx:annotation-driven transaction-manager="transactionManager" />

	<bean
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/jsp/" />
		<property name="suffix" value=".jsp" />
	</bean>
</beans>

第五步:把各個子模塊聚合在一起。

修改maven-parent的pom文件,增加以下配置:

<modules>
	<module>maventest-dao</module>
	<module>maventest-service</module>
	<module>maventest-web</module>
</modules>

2.6 測試

第一步:配置tomcat插件。

修改maventest-parent工程的pom文件,在plugins節點中添加以下配置。

<!-- 配置Tomcat插件 -->
<plugin>
	<groupId>org.apache.tomcat.maven</groupId>
	<artifactId>tomcat7-maven-plugin</artifactId>
	<version>2.2</version>
	<configuration>
		<port>80</port>
		<path>/</path>
	</configuration>
</plugin>

第二步:啓動Tomcat。

鼠標右鍵選擇maventest-parent工程,選擇Run As > Maven build,然後在Goals中輸入“tomcat7:run”命令,點擊Run啓動Tomcat。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章