美文网首页
springboot搭建ssm项目并配置log4j实现日志记录

springboot搭建ssm项目并配置log4j实现日志记录

作者: haiyong6 | 来源:发表于2019-11-07 22:58 被阅读0次

    前边文章写了如何从0搭建ssm 普通web项目,链接:https://www.jianshu.com/p/b84ee274234f
    配置环境什么的比较复杂,但是很有掌控感,springboot基本上是在ssm的基础上做了封装,约定优于配置,大大减少了配置项目的时间,但一些东西不在面上总觉得不太习惯,来搭建一个简单的基于springboot2的ssm项目

    下载sts工具

    打开springboot官网
    https://spring.io/projects/spring-boot

    深度截图_选择区域_20191107215001.png
    点击最下面的tools进入sts工具下载页面,可以选择相应系统版本

    sts其实是安装了sts4插件的eclipse,所以也可以用普通的eclipse直接marketPlace搜索下载sts4

    用sts工具新建springboot项目

    打开sts工具,new一个springboot项目,如图,一路next


    深度截图_选择区域_20191107215431.png 深度截图_选择区域_20191107215527.png

    上图中把type改为jar包,直接用springboot内置的tomcat启动项目,不用额外下载tomcat服务器了


    深度截图_选择区域_20191107215559.png

    上图中Available里面可以搜索所有引入模块,这里我们搜索选中搭建ssm项目所需要的mybatis,oracle,thymeleaf,spring web等模块,没错,springboot推荐使用thymeleaf而不是jsp,配置jsp需要额外配置,这里也不建议,作为模板引擎thymeleaf会更强大。

    点击finish等待maven下载依赖jar包工程构建完成即可。

    application.properties加入以下必须配置项,配置数据源,服务器端口等必须信息

    server.port=8081
    
    spring.datasource.url=jdbc\:oracle\:thin\:@127.0.0.1\:1521\:xe
    spring.datasource.username=XXXX
    spring.datasource.password=XXXX
    spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
    #spring.datasource.hikari.auto-commit=false
    
    
    mybatis.config-location=classpath:mybatis/mybatis-config.xml
    mybatis.mapper-locations=classpath:mapper/*Mapper.xml
    
    #thymeleaf
    spring.thymeleaf.prefix=classpath:/templates/
    spring.thymeleaf.suffix=.html
    spring.thymeleaf.mode=LEGACYHTML5
    spring.thymeleaf.encoding=UTF-8
    spring.thymeleaf.servlet.content-type=text/html
    spring.thymeleaf.cache=false
    
    logging.config=classpath:log4j2-spring.xml
    
    
    

    pom.xml引入log4j依赖,springboot热部署,阿里巴巴的json依赖等

    <?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.2.0.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
        <groupId>com.zhaohy</groupId>
        <artifactId>springboot-ssmDemo</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>jar</packaging>
        <name>springboot-ssmDemo</name>
        <description>Demo project for Spring Boot</description>
    
        <properties>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-thymeleaf</artifactId>
                <exclusions>
                    <exclusion>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <!-- 排除默认的logback日志,使用log4j-->
                <exclusions>
                    <exclusion>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>2.1.1</version>
            </dependency>
    
            <dependency>
                <groupId>com.oracle.ojdbc</groupId>
                <artifactId>ojdbc8</artifactId>
                <scope>runtime</scope>
            </dependency>
            
            <!--springboot热部署-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <optional>true</optional>
            </dependency>
            
            <!--JSON依赖-->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.58</version>
            </dependency>
            
            <!-- log4j -->
            <!-- 支持log4j2的模块,注意把spring-boot-starter和spring-boot-starter-web包中的logging去掉 -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-log4j2</artifactId>
            </dependency>
            
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
                <exclusions>
                    <exclusion>
                        <groupId>org.junit.vintage</groupId>
                        <artifactId>junit-vintage-engine</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
            
        </build>
    
    </project>
    
    

    src/main/resource下建立log4j的配置文件 log4j2-spring.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="OFF" monitorInterval="1800">
        <properties>
            <property name="LOG_HOME">/home/zhaohy/myspace/logs</property>
            <property name="FILE_NAME">MyLogs</property>
        </properties>
    
    
        <Appenders>
            <Console name="Console" target="SYSTEM_OUT">
                <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
            </Console>
    
            <RollingFile name="running-log" fileName="${LOG_HOME}/${FILE_NAME}.log"
                filePattern="${LOG_HOME}/$${date:yyyy-MM}/${FILE_NAME}-%d{yyyy-MM-dd}-%i.log.gz"
                immediateFlush="true">
                <PatternLayout
                    pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} %level [%thread][%file:%line] - %msg%n" />
                <Policies>
                    <TimeBasedTriggeringPolicy />
                    <SizeBasedTriggeringPolicy size="10 MB" />
                </Policies>
                <DefaultRolloverStrategy max="20" />
            </RollingFile>
        </Appenders>
        <Loggers>
    
             <Logger name="com.zhaohy.app.dao" level="debug" additivity="true"> 
                <AppenderRef ref="running-log" /> 
                <!-- 这里是输入到控制台-->
                <AppenderRef ref="Console" />
              </Logger> 
    
            <Root level="info">
                   <!-- 这里是输入到文件,很重要-->
                <AppenderRef ref="running-log" />
                <!-- 这里是输入到控制台-->
                <AppenderRef ref="Console" />
            </Root>
        </Loggers>
    </Configuration>
    

    在resources下建立mybatis文件夹以及mybatis-config.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>  
        <!-- 和spring整合后 environments配置将废除-->
        <!-- <environments default="development">
            <environment id="development">
                使用jdbc事务管理
                <transactionManager type="JDBC"/>
                数据库连接池
                <dataSource type="POOLED">
                    <property name="driver" value="oracle.jdbc.OracleDriver"/>
                    <property name="url" value="jdbc:oracle:thin:@172.16.1.37:1521:DBFM"/>
                    <property name="username" value="FAWVW"/>
                    <property name="password" value="FAWvw419"/>
                </dataSource>
            </environment>
        </environments>  -->
        
        <!-- 查找sql映射文件 -->
         <!-- <mappers>
            <mapper resource="com/example/demo/app/sqlmap/testMapper.xml"/>
        </mappers> -->
        <!-- <settings>
            <setting name="logImpl" value="STDOUT_LOGGING"/>
        </settings> -->
    </configuration>
    

    resources下建立mapper文件夹以及testMapper.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="com.zhaohy.app.dao.TestMapper">
        <select id="getUser" resultType="java.util.HashMap">
            select * from da_user
        </select>
    </mapper>
    

    建立controller,service,serviceImpl,dao等业务层

    TestController.java

    package com.zhaohy.app.controller;
    
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    import com.zhaohy.app.service.TestService;
    
    @Controller
    public class TestController {
        @Autowired
        TestService testService;
        @RequestMapping("/test.do")
        public String test() {
            Map<String, Object> paramsMap = new HashMap<String, Object>();
            List<Map<String, Object>> list = testService.getUser(paramsMap);
            for(int i = 0; i < list.size(); i++) {
                Map<String, Object> map = list.get(i);
                System.out.println(map.get("USER_NAME").toString());
            }
            return "pages/hello.html";
        }
        
        @RequestMapping("/")
        public String goPage() {
            
            
            
            return "index.html";
        }
    }
    
    

    TestService.java

    package com.zhaohy.app.service;
    
    import java.util.List;
    import java.util.Map;
    
    public interface TestService {
    
        List<Map<String, Object>> getUser(Map<String, Object> paramsMap);
    
    }
    
    

    TestServiceImpl.java

    package com.zhaohy.app.service.impl;
    
    import java.util.List;
    import java.util.Map;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import com.zhaohy.app.dao.TestMapper;
    import com.zhaohy.app.service.TestService;
    @Service("TestService")
    public class TestServiceImpl implements TestService {
        @Autowired
        private TestMapper testMapper;
        @Override
        public List<Map<String, Object>> getUser(Map<String, Object> paramsMap) {
            
            return testMapper.getUser(paramsMap);
        }
    
    }
    
    

    TestMapper.java

    package com.zhaohy.app.dao;
    
    import java.util.List;
    import java.util.Map;
    
    public interface TestMapper {
    
        List<Map<String, Object>> getUser(Map<String, Object> paramsMap);
    
    }
    
    

    SpringbootSsmApplication.java里配置mybatis扫描mapper接口路径

    package com.zhaohy.app;
    
    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    @MapperScan("com.zhaohy.app.dao")
    public class SpringbootSsmApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(SpringbootSsmApplication.class, args);
        }
    
    }
    
    

    src/main/resources/templates下面新建pages文件夹以及所需html

    /pages/hello.html

    <!DOCTYPE html>
    <html  xmlns:th="http://www.thymeleaf.org" >
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
      hello a
    </body>
    </html>
    

    templates下的index.html

    <!DOCTYPE html>
    <html  xmlns:th="http://www.thymeleaf.org" >
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
            hello world!
            <div th:text="你好啊">sdf</div>
    </body>
    </html>
    

    至此项目搭建完毕 目录如图


    深度截图_选择区域_20191107224350.png

    浏览器访问根目录
    如图所示thymeleaf生效


    深度截图_选择区域_20191107224444.png

    访问/test.do


    深度截图_选择区域_20191107224520.png

    控制台log4j打印sql成功


    深度截图_选择区域_20191107224642.png

    项目可以正常使用。
    代码已上传github:
    https://github.com/haiyong6/haiyongsRepository/tree/master/code/springbootSSM

    相关文章

      网友评论

          本文标题:springboot搭建ssm项目并配置log4j实现日志记录

          本文链接:https://www.haomeiwen.com/subject/fddbbctx.html