2019年最新最全基于Maven的SSM项目框架搭建及简单实例(其中会涉及到Intellij、Aspect、Lombok、log4j)

浅谈

本文大概花了我一周时间整理吧,大概涉及到了:基于Aspect的AOP日志切入、Lombok、log4j,Spring自动注入、基于JackSon的Json、ModelAndView、基于DateConverter的Date自动格式化处理、Junit…等等。
本文分两部分,第一部分仅仅包含项目搭建,第二部分包含简单的运行示例。
在Maven导入Maven依赖时,我不会扔一大堆给你让你直接拷贝过去,我会一个个介绍。虽然麻烦一点,但会有助于你理解jar包的结构,便于以后维护代码。


一、框架搭建

1.新建Maven项目

点击File->New->Project
新建Maven项目
在这里插入图片描述
在这里写上你的GroupId(把你的域名倒过来,比如说music.163.com,他的GroupId就是com.163.music,你也可以直接写com.demo)和ArtifactId(你项目的名称)
项目名称
配置Maven的配置文件settings.xml和代码仓库,如果你没更改过代码仓库和设置的话,Ovaerride那里可以不选择,系统会默认给你配置一个
代码仓库
最后点击Finish,项目就搭建好了,这是Intellij会下载一些东西,你可能要等待一会。成功了之后,你会看到你的项目架构是这个样子的:
代码结构
如果出现了以下提示,点击Enable Auto-Import
Enable Auto-Import

在一个标准的SSM仓库里面,你还得新建这些文件夹:

  • src/test(用来放置test文件)
  • src/main/java(用来放置Java代码)
  • src/main/resource(用来放置一些xml配置文件、mybatis中的mapping和properties文件 )

其中Test需要被Mark Directory as Test Sources Root,右键test文件夹就行;以此类推,java文件夹需要被Mark Directory as Sources Root,resource需要被Mark Directory as Resources Sources Root
Mark Directory as Test Sources Root
另外你还得在java文件夹下右键新建包,按照你之前创建项目时的GroupId,类似我就创建com.yech
在这里插入图片描述
所以最后你的项目框架是这个样子
项目框架


2.Maven依赖

① 进入Pom.xml

进入Pom.xml文件,刚开始是这么个样子的,接下来就开始漫长的Maven依赖配置过程咯
Pom.xml

② Spring生态系统依赖

因为Spring官方建议我们所有Spring的生态系统Jar包应该保证统一版本,所以我们在 properties节点下 加上这么一行代码,在下面的代码中如果需要用到Spring生态系统,只需要引用这个版本就行了,

<springversion>5.1.2.RELEASE</springversion>

我们这个项目需要用到的Spring Jar包有(所有的dependency都是放在 dependencies节点下 ):
Spring-context

<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-context</artifactId>
	<version>${springversion}</version>
</dependency>

Spring测试

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-test</artifactId>
  <version>${springversion}</version>
</dependency>

Spring JDBC

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-jdbc</artifactId>
  <version>5.1.6.RELEASE</version>
</dependency>

③ Spring MVC相关

Spring MVC

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-webmvc</artifactId>
  <version>${springversion}</version>
</dependency>
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-web</artifactId>
  <version>${springversion}</version>
</dependency>

JSTL表达式

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>jstl</artifactId>
  <version>1.2</version>
</dependency>
<dependency>
  <groupId>taglibs</groupId>
  <artifactId>standard</artifactId>
  <version>1.1.2</version>
</dependency>

Java EE

<!--    Jave EE-->
<dependency>
  <groupId>javax</groupId>
  <artifactId>javaee-api</artifactId>
  <version>8.0</version>
</dependency>

③ Mybatis相关

Mybatis核心Jar包

 <dependency>
   <groupId>org.mybatis</groupId>
   <artifactId>mybatis</artifactId>
   <version>3.4.6</version>
 </dependency>

Spring整合Mybatis中间件

<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis-spring</artifactId>
  <version>1.3.2</version>
</dependency>

为了配合Mybatis能找到mapping等文件,需要在 build节点下 添加以下配置

<!--    为了让项目能够找到mapper等xml文件-->
<resources>
  <resource>
    <directory>src/main/resources</directory>
    <includes>
      <include>**/*.properties</include>
      <include>**/*.xml</include>
    </includes>
    <filtering>false</filtering>
  </resource>
</resources>

MySQL驱动

 <dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>8.0.13</version>
 </dependency>

数据库连接池

<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>druid</artifactId>
  <version>1.1.12</version>
</dependency>

Mybatis分页

<dependency>
  <groupId>com.github.pagehelper</groupId>
  <artifactId>pagehelper</artifactId>
  <version>5.1.8</version>
</dependency>

④ 其他

JsckSon:用来处理JSON

<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-core</artifactId>
  <version>2.9.7</version>
</dependency>
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-databind</artifactId>
  <version>2.9.7</version>
</dependency>
<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-annotations</artifactId>
  <version>2.9.7</version>
</dependency>

Lombok:用来在entity类下添加注解,自动生成toString、Build、构造方法等

 <dependency>
   <groupId>org.projectlombok</groupId>
   <artifactId>lombok</artifactId>
   <version>1.18.4</version>
 </dependency>

Log4j:用来管理项目的日志,搭配SpringAOP使用,会很方便

<dependency>
  <groupId>commons-logging</groupId>
  <artifactId>commons-logging-api</artifactId>
  <version>1.1</version>
</dependency>
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>1.7.26</version>
</dependency>
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
  <version>1.7.26</version>
</dependency>

AOP:可以用来嵌入日志

<dependency>
  <groupId>org.aspectj</groupId>
  <artifactId>aspectjrt</artifactId>
  <version>1.9.1</version>
</dependency>
<dependency>
  <groupId>org.aspectj</groupId>
  <artifactId>aspectjtools</artifactId>
  <version>1.9.1</version>
</dependency>
<dependency>
  <groupId>org.aspectj</groupId>
  <artifactId>aspectjweaver</artifactId>
  <version>1.9.1</version>
</dependency>
<dependency>
  <groupId>aopalliance</groupId>
  <artifactId>aopalliance</artifactId>
  <version>1.0</version>
</dependency>

3.配置文件

①总结

SSM的配置文件有以下几种:

  • application.xml:用来整合Spring配置文件、Spring MVC配置文件、Mybatis配置文件
  • spring.xml:Spring的配置文件。主要配置:自动注入、AOP,也就是Spring的两大功能
  • springmvc.xml:Spring MVC的配置文件。主要配置:禁止静态资源的拦截、配置InternalResourceViewResolver给Spring MVC返回值添加前缀和后缀、配置全局Date转换器,将来自客户端的类似"1999-10-20"字符串的日期格式转换为Date类型
  • mybatis.xml:Mybatis的配置文件。主要配置:设置数据库连接属性、配置数据源、扫描Dao和Mapping、配置事务管理器、配置基于注解的声明式事务
  • mybatisConfig.xml:会被mybatis.xml引入,是Mybatis在使用时会用到的另一些其他的配置,类似是否打印查询语句,配置分页插件等等。
  • mapping:这个也是位于resource下,Mybatis会结合dao来执行sql语句,后面我们会再详细讲到
  • log4j.properties:log4j日志的配置文件
  • mysql.properties:记录MySQL的一些信息,类似connectionURL、用户名和密码等等
  • web.xml:这个位于webapp/WEB-INF下,配置web的一些信息。类似Spring MVC拦截

②application.xml

主要用来连接Spring、Spring MVC、Mybatis配置文件,本身不配置任何东西

<?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">
    <import resource="spring.xml"/>
    <import resource="springmvc.xml"/>
    <import resource="mybatis.xml"/>
</beans>

③spring.xml

配置DI和AOP,注意把com.zparkep改成你自己的包名

<?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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.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">
    <!--Spring想为哪个包下面的类生成对象-->
    <context:component-scan base-package="com.zparkep"/>
	<!--    AOP-->
    <aop:aspectj-autoproxy />
</beans>

④springmvc.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:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
	    http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    <!-- 让SpringMVC不拦截静态资源,否则JS等文件无法加载-->
    <mvc:default-servlet-handler/>
<!--    配置来自服务器端请求的前缀和后缀,也可以将之写成“/WEB-INF/views/”来保证所有的网页安全-->
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

⑤mysql.properties

主要记录你自己的数据库信息,便于之后被Mybatis导入,千万记得改成你自己电脑的Mysql数据库、用户名和密码,别傻傻的直接复制粘贴过去

driverClass=com.mysql.cj.jdbc.Driver
connectionURL=jdbc:mysql://localhost:3306/db_test?useSSL=false&serverTimezone=UTC&user=root&password=&useUnicode=true&characterEncoding=UTF8&autoReconnect=true&failOverReadOnly=false
user=root
password=root

⑥mybatis.xml

引用上面的mysql.properties来配置Mybatis,注意把com.zparkep改成你自己的包名

<?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:tx="http://www.springframework.org/schema/tx"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
                        http://www.springframework.org/schema/tx
                        http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
                        http://www.springframework.org/schema/context
   http://www.springframework.org/schema/context/spring-context.xsd">
    <!-- 加载数据库属性配置文件 -->
    <context:property-placeholder location="classpath:mysql.properties" />
    <!-- 配置数据源 -->
    <bean id="ds"
          class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${driverClass}"/>
        <property name="url" value="${connectionURL}"/>
        <property name="username" value="${user}"/>
        <property name="password" value="${password}"/>
    </bean>

    <!-- 配置扫描DAO接口所在包名,Spring会自动查找其下的类 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- 给出需要扫描Dao接口包 -->
        <property name="basePackage" value="com.zparkep.dao" />
        <!-- 注入sqlSessionFactory -->
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
    </bean>

    <!-- 注册SqlSessionFactoryBean,同时指定数据源-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="ds" />
        <!-- 自动扫描mappers.xml文件 -->
        <property name="mapperLocations" value="classpath:/mapping/*.xml" />
        <property name="configLocation" value="classpath:mybatisConfig.xml"/>
    </bean>

    <!-- 配置事务管理器 -->
    <bean id="txManager"
          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="ds"/>
    </bean>

    <!-- 配置基于注解的声明式事务 -->
    <tx:annotation-driven transaction-manager="txManager"/>
</beans>

⑦ mybatisConfig.xml

主要配置分页插件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings>
        <!-- 打印查询语句 -->
        <setting name="logImpl" value="STDOUT_LOGGING"/>
        <!--下划线转驼峰式 ,使得在UserDao.xml中可以直接使用resultType="user"来引用用Dao-->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
    <typeAliases>
        <package name="com.zparkep.entity"/>
    </typeAliases>
    <!-- 配置分页插件 -->
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageInterceptor">
            <property name="helperDialect" value="mysql"/>
        </plugin>
    </plugins>
</configuration>

⑧log4j.properties

### 设置###
log4j.rootLogger = debug,stdout,D,E

### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

### 输出DEBUG 级别以上的日志到=E://logs/error.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = E://logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG 
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

### 输出ERROR 级别以上的日志到=E://logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =E://logs/error.log 
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR 
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

⑨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_4_0.xsd"
         id="WebApp_ID"
         version="4.0">
	<!--   “/”代表所有的请求都会被定位到SpringMVCDispatcher-->
    <servlet-mapping>
        <servlet-name>SpringMVCDispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>SpringMVCDispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 配置DispatcherServlet的初始化參數:设置文件的路径和文件名称 -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:application.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
        <async-supported>true</async-supported>
    </servlet>
</web-app>

⑩mapping

这个就暂时先不讲,等到讲到Mybatis时候再讲

配置完了之后,我们的项目框架是这个样子的:(其中有个rebel.xml不用管,那个是我装了jRebel时才多出来的,一般情况下是没有的):
在这里插入图片描述


4.代码分层架构

大家知道现在的SSM框架都采用MVC分层架构,所以我们的代码也是需要分层的,所以我们需要以下几个包:

  • controller:来处理来自客户端的请求
  • service:放置service的接口,被上层的controller调用,满足controller的需求,同时会在该目录下生成一个impl包,来放置service的实现类
  • dao:放接口,每一个接口都是集合了对一个表的所有sql操作,Mybatis会调用在resource/mapping下的xml文件,来实现dao接口里面的sql操作,会被上层的service调用。
  • entity:一一对应数据库中的表,会被dao调用

之后我们的代码框架会大致像这个样子,我在每个包下面都新建了一个类或接口:
项目框架

5.配置Tomcat

点击Intellij的这个位置,添加一个tomcat服务器
在这里插入图片描述
点击这里添加一个本地的tomcat
在这里插入图片描述
点击这里选择你自己电脑的tomcat位置
在这里插入图片描述
点击这里的fix将自己电脑的War放到tomcat里面去,选择下面一个
在这里插入图片描述

最后点击这里的Run,就能运行成功啦
在这里插入图片描述
弹出这个界面就证明你成功了
在这里插入图片描述
至此环境配置就告一段落了,接下来我们会简单的写一个小应用来完善一下我们的SSM项目


二、简单应用

这里留个坑,过一段时间来更新哈

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值