SSM整合配置

SSM整合

1、导入依赖

 <properties>
         <spring.version>5.3.5</spring.version>
         <aspectj.version>1.9.5</aspectj.version>
         <mybatis.version>3.5.3</mybatis.version>
         <mybatis.spring.version>2.0.3</mybatis.spring.version>
         <mysql.version>8.0.21</mysql.version>
         <druid.version>1.2.3</druid.version>
         <lombok.version>1.18.16</lombok.version>
         <junit.version>4.13.1</junit.version>
         <slf4j.version>2.0.0-alpha1</slf4j.version>
         <log4j.version>1.2.17</log4j.version>
         <fastjson>1.2.75</fastjson>
     </properties>
 
     <dependencies>
 
         <!--spring-->
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-webmvc</artifactId>
             <version>${spring.version}</version>
         </dependency>
 
         <!--spring-jdbc-->
         <dependency>
             <groupId>org.springframework</groupId>
             <artifactId>spring-jdbc</artifactId>
             <version>${spring.version}</version>
         </dependency>
 
         <!--aspectj-->
         <dependency>
             <groupId>org.aspectj</groupId>
             <artifactId>aspectjweaver</artifactId>
             <version>${aspectj.version}</version>
         </dependency>
 
         <!--mybatis-->
         <dependency>
             <groupId>org.mybatis</groupId>
             <artifactId>mybatis</artifactId>
             <version>${mybatis.version}</version>
         </dependency>
 
         <!--mybatis-spring-->
         <dependency>
             <groupId>org.mybatis</groupId>
             <artifactId>mybatis-spring</artifactId>
             <version>${mybatis.spring.version}</version>
         </dependency>
 
         <!--mysql-->
         <dependency>
             <groupId>mysql</groupId>
             <artifactId>mysql-connector-java</artifactId>
             <version>${mysql.version}</version>
         </dependency>
 
         <!--druid数据源-->
         <dependency>
             <groupId>com.alibaba</groupId>
             <artifactId>druid</artifactId>
             <version>${druid.version}</version>
         </dependency>
 
         <!--lombok-->
         <dependency>
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
             <version>${lombok.version}</version>
             <scope>provided</scope>
         </dependency>
 
         <!--junit-->
         <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
             <version>${junit.version}</version>
             <scope>test</scope>
         </dependency>
 
         <!--slf4j-->
         <dependency>
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-api</artifactId>
             <version>${slf4j.version}</version>
         </dependency>
 
         <!--slf4j-log4j12-->
         <dependency>
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-log4j12</artifactId>
             <version>${slf4j.version}</version>
         </dependency>
 
         <!--log4j-->
         <dependency>
             <groupId>log4j</groupId>
             <artifactId>log4j</artifactId>
             <version>${log4j.version}</version>
         </dependency
​ 
       <!--fastjson--> 
       <dependency
           <groupId>com.alibaba</groupId
           <artifactId>fastjson</artifactId
           <version>${fastjson}</version
       </dependency
   </dependencies
​ 
   <!--静态文件导出问题--> 
   <build
       <resources
           <resource
               <directory>src/main/resources</directory
               <includes
                   <include>**/*.properties</include
                   <include>**/*.xml</include
               </includes
               <filtering>true</filtering
           </resource
           <resource
               <directory>src/main/java</directory
               <includes
                   <include>**/*.properties</include
                   <include>**/*.xml</include
               </includes
               <filtering>true</filtering
           </resource
       </resources
   </build>

 

2、配置文件

1、mybatis主配置文件:mybatis-conf.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="mapUnderscoreToCamelCase" value="true"/>
         <!--指定日志实现,这里我们用log4j-->
         <setting name="logImpl" value="LOG4J"/>
     </settings>
 
     <!--别名-->
     <typeAliases>
         <package name="com.study.pojo"/>
     </typeAliases>
 
     <!--mapper映射文件-->
     <mappers>
         <package name="com.study.mapper"/>
     </mappers>
 </configuration>

 

2、日志配置文件:log4j.properties(根据需要删减和修改

 ### 配置根 ###
 log4j.rootLogger = debug,console ,fileAppender,dailyRollingFile,ROLLING_FILE,MAIL,DATABASE
 
 ### 设置输出sql的级别,其中logger后面的内容全部为jar包中所包含的包名 ###
 log4j.logger.org.apache=dubug
 log4j.logger.java.sql.Connection=dubug
 log4j.logger.java.sql.Statement=dubug
 log4j.logger.java.sql.PreparedStatement=dubug
 log4j.logger.java.sql.ResultSet=dubug
 
 ### 配置输出到控制台 ###
 log4j.appender.console = org.apache.log4j.ConsoleAppender
 log4j.appender.console.Target = System.out
 log4j.appender.console.layout = org.apache.log4j.PatternLayout
 log4j.appender.console.layout.ConversionPattern = %d{ABSOLUTE} %5p %c{1}:%L - %m%n
 
 ### 配置输出到文件 ###
 log4j.appender.fileAppender = org.apache.log4j.FileAppender
 log4j.appender.fileAppender.File = logs/log.log
 log4j.appender.fileAppender.Append = true
 log4j.appender.fileAppender.Threshold = DEBUG
 log4j.appender.fileAppender.layout = org.apache.log4j.PatternLayout
 log4j.appender.fileAppender.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
 
 ### 配置输出到文件,并且每天都创建一个文件 ###
 log4j.appender.dailyRollingFile = org.apache.log4j.DailyRollingFileAppender
 log4j.appender.dailyRollingFile.File = logs/log.log
 log4j.appender.dailyRollingFile.Append = true
 log4j.appender.dailyRollingFile.Threshold = DEBUG
 log4j.appender.dailyRollingFile.layout = org.apache.log4j.PatternLayout
 log4j.appender.dailyRollingFile.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
 
 ### 配置输出到文件,且大小到达指定尺寸的时候产生一个新的文件 ###
 log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender
 log4j.appender.ROLLING_FILE.Threshold=ERROR
 log4j.appender.ROLLING_FILE.File=rolling.log
 log4j.appender.ROLLING_FILE.Append=true
 log4j.appender.ROLLING_FILE.MaxFileSize=10KB
 log4j.appender.ROLLING_FILE.MaxBackupIndex=1
 log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
 log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
 
 ### 配置输出到邮件 ###
 log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
 log4j.appender.MAIL.Threshold=FATAL
 log4j.appender.MAIL.BufferSize=10
 log4j.appender.MAIL.From=chenyl@yeqiangwei.com
 log4j.appender.MAIL.SMTPHost=mail.hollycrm.com
 log4j.appender.MAIL.Subject=Log4J Message
 log4j.appender.MAIL.To=chenyl@yeqiangwei.com
 log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
 log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
 
 ### 配置输出到数据库 ###
 log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
 log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test
 log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver
 log4j.appender.DATABASE.user=root
 log4j.appender.DATABASE.password=
 log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')
 log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
 log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
 log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
 log4j.appender.A1.File=SampleMessages.log4j
 log4j.appender.A1.DatePattern=yyyyMMdd-HH'.log4j'
 log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout

 

日志信息,符号代表的含义:

 -X号: X信息输出时左对齐;
  %p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,
  %d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
  %r: 输出自应用启动到输出该log信息耗费的毫秒数
  %c: 输出日志信息所属的类目,通常就是所在类的全名
  %t: 输出产生该日志事件的线程名
  %l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main (TestLog4.java:10)
  %x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
  %%: 输出一个"%"字符
  %F: 输出日志消息产生时所在的文件名称
  %L: 输出代码中的行号
  %m: 输出代码中指定的消息,产生的日志具体信息
  %n: 输出一个回车换行符,Windows平台为"\r\n",Unix平台为"\n"输出日志信息换行
  可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:
  1)%20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。
  2)%-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,"-"号指定左对齐。
  3)%.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。
  4)%20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边较远输出的字符截掉。

 

3、Spring主配置文件:applicationContext.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"
        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">
 
     <!--导入其他配置-->
     <import resource="classpath:spring-tx.xml"/>
 
     <!--注解扫描器-->
     <context:component-scan base-package="com.study.service"/>
     <context:component-scan base-package="com.study.mapper"/>
 
     <!--启动注解注入-->
     <context:annotation-config/>
 </beans>

 

4、SpringMCV配置文件:spring-mvc.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: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">
 
        <!--不拦截静态资源-->
        <mvc:default-servlet-handler/>
        <!--配置注解驱动-->
        <mvc:annotation-driven/>
 
        <!--注解扫描-->
        <context:component-scan base-package="com.study.controller"/>
 
        <!--视图解析器-->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
               <property name="prefix" value="/WEB-INF/jsp/"/>
               <property name="suffix" value=".jsp"/>
        </bean>
 </beans>

 

5、Spring注解配置文件:spring-tx.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: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/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
 
     <import resource="classpath:spring-mybatis.xml"/>
 
     <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
         <property name="dataSource" ref="dataSource"></property>
     </bean>
 
     <!--开启事务注解驱动-->
     <tx:annotation-driven transaction-manager="transactionManager"/>
 </beans>

 

6、整合Mybatis配置文件:spring-mybatis.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"
        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">
 
        <!--导入属性文件-->
        <context:property-placeholder location="classpath:db.properties"/>
 
        <!--配置druid数据源-->
        <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
               <property name="driverClassName" value="${mysql.driver}"/>
               <property name="url" value="${mysql.url}"/>
               <property name="username" value="${mysql.username}"/>
               <property name="password" value="${mysql.password}"/>
        </bean>
 
        <!--配置sqlSessionFactory-->
        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
               <property name="dataSource" ref="dataSource"/>
               <property name="configLocation" value="classpath:mybatis-conf.xml"/>
        </bean>
 
        <!--为每个mapper接口生成动态代理类-->
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
               <property name="basePackage" value="com.study.mapper"/>
        </bean>
 
 </beans>

 

7、数据库属性文件:db.properties

 mysql.driver=com.mysql.cj.jdbc.Driver
 mysql.url=jdbc:mysql://localhost:3306/test?useSSL=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
 mysql.username=root
 mysql.password=root123

 

8、Mapper.xml配置文件

 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper
   PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
   "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.mybatis.example.BlogMapper">
   <select id="selectBlog" resultType="Blog">
    select * from Blog where id = #{id}
   </select>
 </mapper>

 

9、web.xml配置文件

 <listener>
         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
     </listener>
 
     <!--spring初始化参数-->
     <context-param>
         <param-name>contextConfigLocation</param-name>
         <param-value>classpath:applicationContext.xml</param-value>
     </context-param>
 
     <!--SpringMVC-->
     <servlet>
         <servlet-name>dispatcherServlet</servlet-name>
         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
         <init-param>
             <param-name>contextConfigLocation</param-name>
             <param-value>classpath:spring-mvc.xml</param-value>
         </init-param>
         <load-on-startup>1</load-on-startup>
     </servlet>
     <servlet-mapping>
         <servlet-name>dispatcherServlet</servlet-name>
         <url-pattern>/</url-pattern>
     </servlet-mapping>
 
     <!--处理中文乱码-->
     <filter>
         <filter-name>characterEncodingFilter</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>characterEncodingFilter</filter-name>
         <url-pattern>/*</url-pattern>
     </filter-mapping>

 

posted @   有梦想的程序员。  阅读(328)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示