springboot搭建ssm项目并配置log4j实现日志记录
前边文章写了如何从0搭建ssm 普通web项目,链接:https://www.jianshu.com/p/b84ee274234f
配置环境什么的比较复杂,但是很有掌控感,springboot基本上是在ssm的基础上做了封装,约定优于配置,大大减少了配置项目的时间,但一些东西不在面上总觉得不太习惯,来搭建一个简单的基于springboot2的ssm项目
下载sts工具
打开springboot官网
https://spring.io/projects/spring-boot
点击最下面的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