Springboot
1、创建maven项目
2、导入springboot相关依赖
<modelVersion>4.0.0</modelVersion>
<groupId>springboot</groupId>
<artifactId>springboot</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
3、springboot项目打成war包在Tomcat下运行
(1)、导入相关依赖,声明打包方式为war包
-
<packaging>war</packaging> <build> <finalName>index</finalName> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>2.5</version> <configuration> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.18.1</version> <configuration> <skipTests>true</skipTests> </configuration> </plugin> </plugins> </build>
-
@RestController @SpringBootApplication @ComponentScan("com.asiainfo.*") //注解扫描不能缺少 public class HelloController extends SpringBootServletInitializer { @RequestMapping("hello") String hello() { return "Hello World!"; } // public static void main(String[] args) { // SpringApplication.run(HelloController.class, args); // } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder springApplicationBuilder) { //注意这里要指向原先用main方法执行的Application启动类 return springApplicationBuilder.sources(HelloController.class); } }
4、springboot集成Mybatis
导入相对应的依赖
<!--mybatis、数据库驱动 相关依赖--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.40</version> </dependency>
导入数据库的链接驱动后,需配置数据库链接信息(否则启动报错)
#应用程序 server: port: 8080 path: /api #mysql数据库配置 spring: datasource: url: jdbc:mysql://localhost:3306/word data-username: root data-password: 123456
Spring Boot
Spring Boot 和 日志框架整合
日志:系统调试、性能分析(系统调优)、统计
日志框架:日志门面(commons-logging、slf4j)和日志框架实现(log4j、log4j2、logback等)
spring boot默认: slf4j + logback
日志级别:
- DEBUG debug > 所有日志
- INFO info > 所有日志
- WARN warn > 所有日志
- ERROR
- OFF
spring boot默认的日志结构
2018-07-14 10:13:58.252 INFO 5368 --- [ main] com.baizhi.SpringbootLogApplication : Started SpringbootLogApplication in 17.183 seconds (JVM running for 21.521)
- 2018-07-14 10:13:58.252 日志产生的时间 精确到毫秒
- INFO 日志级别
- 5368 进程号
- [ main] 线程名
- com.baizhi.SpringbootLogApplication 日志类
- Started SpringbootLogApplication in 17.183 seconds (JVM running for 21.521) 日志的详细信息
如何自定义日志?
Logger logger = LoggerFactory.getLogger(类对象);
// 声明日志采集器
private static final Logger logger = LoggerFactory.getLogger(LogController.class);
@RequestMapping("/")
public String index(){
// 记录debug级别的日志
logger.debug("this is debug");
String username ="zs";
logger.info("this is info, username : "+username);
logger.info("this is info, username : {},{},{}",username,"aa","bb");
logger.warn("this is warn");
logger.error("this is error");
return "Hello spring boot";
}
生产环境中日志通常是记录在一个日志文件中的
建议:项目中不要出现打印语句,通过日志框架输入内容
Spring Boot 与 freemarker整合
- freemarker 基本语法:
<html>
<head>
<title>this is index.html</title>
</head>
<body>
<!-- ftl 取值表达式 -->
<#-- freemarker的注释-->
Hello:${name}
<hr>
<#-- 获取对象类型的value-->
Hello: ${user.id} | ${user.name}
<hr>
<#-- 获取数值类型的value-->
<li>${number}</li>
<li>${number?string.percent}</li>
<li>${number?string.currency}</li>
<hr>
<#-- 获取日期类型的value-->
<li>年月日:${date?date}</li>
<li>年月日 时分秒:${date?datetime}</li>
<li>时分秒:${date?time}</li>
<li>自定义日期格式:${date?string("yyyy年MM月dd日")}</li>
<hr>
<#-- 布尔类型取值-->
<li>${boolean?string("yes","no")}</li>
<li>${boolean?c}</li>
<hr>
<#-- 获取集合类型的value-->
<#list balls as ball>
<li>${ball}</li>
</#list>
<hr>
<#-- 获取map集合类型的value-->
<#list citys?keys as key>
<li>${key} -> ${citys[key]}</li>
</#list>
<hr>
<#-- 条件判断语句-->
<#if name=="zs">
name属性的value是zs
<#--注意:else语句没有结束标签-->
<#else>
name属性的value不是zs
</#if>
<#if number gte 100 >
number大于100
</#if>
<hr>
<#-- 空值处理-->
${exists!"默认值"}
<hr>
<#if exists??>
不为空
<#else>
为空
</#if>
<hr>
<#-- include 页面包含-->
<#--
动态包含 <jsp:include> 编译后包含
静态包含 <%@ include> 源代码包含
-->
<#--注意:准备数据时,需要提供当前模版文件和包含模版文件的所有数据-->
<#include "include.ftl">
</body>
</html>
Spring Boot+Mybatis + 数据库 整合
- 配置参数
#====================Spring Boot和Mybatis整合 数据库连接参数=======================
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
username: root
password: root
url: jdbc:mysql://localhost:3306/baizhi?useUnicode=true&characterEncoding=utf-8
mybatis:
# mapper-locations: classpath:com/baizhi/mapper/*Mapper.xml
type-aliases-package: com.baizhi.entity
SPring Boot + redis 整合
- 配置参数
# =================Spring Boot和Redis整合 指定 redis server的连接参数================
spring:
redis:
host: 172.16.131.128 # redis server的ip地址
port: 6379