SpringBoot简介
- 简化SSM开发的创建和开发过程,抛弃了繁琐的xml配置过程,采用大量默认配置。
- 快速创建基于Spring框架的应用程序,编码、配置、部署、监控都变得简单。
- 关注趋势图:http://t.cn/ROQLquP
SpringBoot特性
- 快速创建基于Spring的程序
- 直接使用java main方法启动内嵌的Tomcat,Jetty服务器运行SpringBoot程序,不需要部署war包
- 起步依赖,提供约定的starter POM简化Maven配置
- 根据项目的依赖配置,SpringBoot自动配置Spring、SpringMVC等
- 提供程序的健康检查等功能
- 基本可以完全不使用xml配置文件,采用注解配置
SpringBoot 四大核心
- 自动配置:针对很多Spring应用程序和常见的应用功能,SpringBoot能自动提供相关配置;
- 起步依赖:告诉SpringBoot需要的功能,就能引入需要的依赖库;
- 健康检查(Actuator):深入运行中的SpringBoot应用程序,查看程序的内部信息;
- 命令行界面:此为可选特性,针对Groovy语言使用;
快速开发一个SpringBoot程序步骤
- 创建一个SpringBoot项目
- 加入SpringBoot的父级和起步依赖;
- 创建SpringBoot的入口main方法
- 创建一个Spring mvc的Controller
- 运行SpringBoot的入口main方法
SpringBoot Demo 程序解析
-
spring-boot-starter-parent(SpringBoot的父级依赖)配置之后,当前的项目就是SpringBoot项目;
<!--继承springboot的父级项目依赖,可以简化Maven的配置。 它用来提供相关的Maven默认依赖,使用它之后,常用的jar包依赖可以省去version配置 想了解SpringBoot提供了哪些默认jar包的依赖,可查看该父级依赖的pom文件--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.8.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <!-- 父级依赖中已经有一种依赖包了,但在我们项目中还是需要再写一遍这个依赖的配置,只不过版本号不需要写了。 这是因为maven里的依赖是放在dependencyManagement这个标签里,表示这个父级里面已经定义了这个依赖包的基础模板,但是要用这个jar包的话还需要再在我们项目中再重新定义一遍。 插件依赖的配置同理,插件是在pluginManagement标签里。 -->
-
如果不想使用某个默认的依赖版本,可以通过pom.xml文件的属性配置覆盖,比如覆盖Spring版本:
<properties> <spring.version>5.0.0.RELEASE</spring.version> </properties>
-
启动类上的@SpringBootApplication注解是SpringBoot项目的核心注解,主要作用是开启Spring自动配置
SpringBoot四大核心,第一个就是自动配置。要保证其他的类放在启动类的下边,或者和它同级。
-
main方法是一 个标准的Java程序的main方法,主要作用是作为项目启动运行的入口
-
@Controller及@ResponseBody依然是我们之前的SpringMvc , 因为SpringBoot的里面依然是使用我们的SSM等框架
SpringBoot核心配置文件
有两种格式的配置文件:.properties配置文件 .yml文件
-
配置示例
#配置服务器端口 server.port=9800 #配置应用访问路径 server.context-path=/springboot-web
server: prot: 9091 context-path: /springboot-web
-
yml文件
- yml是种yaml格式的配置文件,采用一定的空格、换行等格式排版进行配置
- yaml是一种直观的能够被计算机识别的数据序列化格式,容易阅读,yaml类似于xml,但是语法更简洁
- 值与前面的冒号配置项必须要有一个空格
- yml后缀也可以使用yaml后缀
-
多环境配置文件
#比如配置测试环境 spring.profiles.active=dev application-dev.properties #比如配置生产环境 spring.profiles.active=product application-product.properties
SpringBoot自定义配置
我们可以在SpringBoot的核心配置文件中自定义配置,然后采用如下注解去读取配置的属性值
-
@Value注解 用于逐个读取自定义的配置,比如:
@Value("${spring.application.name:}") private String applicationName;
-
@ConfigurationProperties 用于将整个文件映射成一个对象,比如:
// @Component注解 将该类变成spring的一个组件,这样就可以在其他地方用Autowired自动注入 @Component @ConfigurationProperties(prefix="springBootDemo") public class MyConfig { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
SpringBoot配置项目编码
-
第一种方式是使用传统的Spring提供给的字符编码过滤器
@Bean public FilterRegistrationBean filterRegistrationBean() { FilterRegistrationBean registrationBean = new FilterRegistrationBean(); CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter(); characterEncodingFilter.setForceEncoding(true); characterEncodingFilter.setEncoding("UTF-8"); registrationBean.setFilter(characterEncodingFilter); registrationBean.addUrlPatterns("/*"); return registrationBean; } /* 在主类上需要扫描此过滤器,扫描包或者class : basePackageClasses=org.springframework.web.filter.Character ★注意:只有当spring.http.encoding.enabled=false配置成false后,过滤器才会起作用 */
-
第二种方式是在application.properties中配置字符编码:
#从springboot1.4.2之后开始新增的一种字符编码设置; spring.http.encoding.charset=UTF-8 spring.http.encoding.enabled=true spring.http.encoding.force=true
IDEA为项目配置编码格式
SpringBoot下的SpringMVC
SpringBoot下的SpringMVC和之前的SpringMVC使用是完全一样的:
- @Controller 即为SpringMVC的注解,处理http请求
- @RestController 是@Controller和@RequestBody的组合注解,用于返回字符串或json数据
- @GetMapping 是RequestMapping和Get请求方法的组合
- @PostMapping = @RequestMapping + RequestMethod.POST
- @PutMapping、
- @DeleteMapping
SpringBoot集成MyBatis
-
在pom.xml中配置相关jar依赖
<!-- 加载mybatis整合springboot --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.1</version> </dependency> <!-- MySQL的jdbc驱动包 --> <dependency> <groupId>mysql</groupId> <artifactId> mysql-connector-java</artifactId> </dependency>
-
在SpringBoot的核心配置文件application.properties中配置MyBatis的Mapper.xml文件
mybatis.mapper-locations=classpath:com/springBootDemo/springboot/mapper/*.xml
-
在SpringBoot的核心配置文件application.properties中配置数据源
spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/demo_test?useUnicode=true&characterEncoding=utf8&useSSL=false
-
在MyBatis的Mapper接口中添加@Mapper注解或者在运行的主类上添加
@MapperScan("com.springBootDemo.springboot.**.mapper")
注解包扫描
用Maven方式创建SpringBoot项目
此方法创建可不连接网络,Meven创建的SpringBoot项目在pom.xml中没有自动写入父级依赖,所以手动加上。
SpringBoot事务支持
- 在入口类中使用注解
@EnableTransactionManagement
开启事务支持 - 在访问数据库的Service方法上添加注解
@Transactional
即可