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

2019-11-07  本文已影响0人  haiyong6

前边文章写了如何从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

上一篇下一篇

猜你喜欢

热点阅读