SpringBoot
是Spring社区退出的一个集成性的框架,它并没有做新的功能的处理,它更多的是用了一种全新的方式来集成Spring以前的相关内容,以及集成Spring以外的组件,这样让我们在构建项目的时候会非常的方便快捷,而且它还内置了服务器,比如tomcat,这样我们在部署项目的时候可以不用在去配置外部tomcat,它提供了一键式的部署方式,所以项目页不需要打成war包,直接通过jar包main函数的方式可以直接启动
构建方式
- 可以通过官网来自动构建
- 可以自己编写maven项目导入核心包构建
- 可以通过工具插件构建
项目结构
就是一个标准的Maven项目
在resource下面有两个可选目录:
-
static
可以存放一些静态的资源文件,比如html、js、css、图片
-
templates
存放一些模板文件
Springboot的包管理
Springboot所有的包的名字都一个规律 spring-boot-start-xxx
Springboot主动集成的jar包都会有自动的版本匹配,我们不需要去手动规定版本号,
如果是外界集成Springboot的包就需要手动规定版本号
基础导包
<!-- Spring的核心包 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- Web包(MVC)该包其实已经包含了核心包,所以可以去掉上面的包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
Springboot(web)的启动
只需要一个main函数去执行相关的初始化方法就会自动打包部署以及启动tomcat
@SpringBootApplication
public class Woniu63BootTestApplication {
public static void main(String[] args) {
SpringApplication.run(Woniu63BootTestApplication.class, args);
}
}
配置
Springboot提供了两种方式的配置
-
properties(属性文件)
server.port=8088 server.servlet.context-path= /woniu63
-
yml(yaml) 对象型配置
#注意:冒号的后面需要有一个空格 server: port: 8088 servlet: context-path: /woniu63
一般来说,我们会选择yaml方式,因为更能够体现对象的层次感
Springboot集成mybatis
-
导包
<!-- myabits跟boot集成包--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.0</version> </dependency> <!-- mysql驱动包 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency>
-
需要通过注解指定mapper接口的位置
@SpringBootApplication //指定mapper接口位置 @MapperScan("com.woniu.mapper") public class Woniu63BootTestApplication { public static void main(String[] args) { SpringApplication.run(Woniu63BootTestApplication.class, args); } }
-
配置数据库连接属性
spring: datasource: url: jdbc:mysql:///task?charsetEncoding=utf- 8&useSSL=false&ServerTimezone=Asia/shanghai username: root password: 123321 driver-class-name: com.mysql.cj.jdbc.Driver
-
配置mybatis xml文件所在的地址
mybatis: mapper-locations: classpath*:mapper/**/*.xml
-
后面的所有mybatis操作跟以前一样
日志输出
springboot默认的日志输出是slf4j + logback
可以直接通过lombock调出日志的API
//该注解会自动生成一个log对象再当前的对象里面使用来输出日志
@Slf4j
public class TestController {
}
@GetMapping("/save")
public String saveUser(UserParam up) {
log.info("======进入新增用户方法: 参数是: {}======",up);
Long start = System.currentTimeMillis();
int i = 1/0;
System.out.println("新增用户");
log.info("方法结束: , 执行时长是: {}",System.currentTimeMillis() - start);
return "ok";
}
注意:在出现异常的时候是一定需要输出日志
@ExceptionHandler(Exception.class)
public String woniuException(Exception e) {
log.error("出现异常: ",e);
return e.getMessage();
}
可以改变mybatis mapper的接口日志级别,设置debug来输出sql信息
logging:
level:
com.woniu.mapper: debug
简单的开发规范
1,每个层次的对象需要独立(数据库(entity)、参数(param)、返回(dto))
2,所有的业务面向异常编程(自定义异常,每一个异常信息包括编号跟消息)
Springboot的配置参数加载方式
两种方式可以加载配置参数
-
@Value注解
@Value("${server.port}") private String port;
-
以对象封装的形式
@Data @Component /* 是规定当前类对象的属性从配置参数里面自动加载,且加载的配置参数前缀是‘apidoc’ 前缀后面的属性名字是根据类里面属性名称来拼接的,例如第一个加载的属性就是: apidoc.basePackage */ @ConfigurationProperties(prefix = "apidoc") public class ApiProperties { private String basePackage; private String title; private String desc; /* 该属性是一个对象,所以在加载的时候是有层次递进的,例如下面的对象里面的第一个属性是name 对应加载配置文件里面的就是:apidoc.oathen.name */ private Oathen oathen; }
@Data public class Oathen { private String name; private String email; private String home; }
apidoc: basePackage: com.woniu.controller title: 说明文档 desc: woniu测试项目的接口说明 oathen: name: admin email: adsfads@woniu.com home: http://xxxx
Springboot自动配置原理
在启动类上面有一个注解@SpringBootApplication,该注解上面有一个用来做自动配置加载规定的注解:
@EnableAutoConfiguration,该注解引入了一个自动配置加载的加载器AutoConfigurationImportSelector
,该加载器对象会去 加载外部的一些配置信息,它回去加载外部jar包里面META-INF文件夹里面的
spring.factories文件,该文件配置了相关需要加载的类,这样就可以把外部jar包的一些对象加载到当前的boot的IOC容器当中进行集成。
多环境与热部署
热部署
1.首先保证springBoot的版本是1.3之后
2.在maven中引入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency>
3.开启热部署
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <fork>true</fork> </configuration> </plugin> </plugins> </build>
多环境配置
1.首先讲一下命名规则:
在Spring Boot中多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应你的环境标识,比如:application-dev.properties:开发环境 application-test.properties:测试环境 application-prod.properties:生产环境 这些文件的存放在与application.properties同级目录中即可
2.如何启用环境配置:
只需要在application.properties文件中加入spring.profiles.active=dev就会加载application-dev.properties配置文件内容