SpringBoot思维导图
一、SpringBoot介绍
- Spring技术栈
包括但不限于Spring Boot、Spring Cloud、Spring Web Service、Spring Kafka等技术。官网:https://spring.io/projects 。 - Spring缘由
由于早期的J2EE开发配置较多、开发效率较低、流程部署复杂、集成第三方难度较大,因此出现了spring系列技术。
同时为了简化配置,出现了SpringBoot技术。随着业务的发展,为了解决分布式应用,出现SpringCloud技术。 - SpringBoot优点
自动配置、简化开发、提高效率;
无需配置xml,可以使用写好的api直接应用;
可以快速创建spring项目,容易与第三方主流框架集成;
准生产环境的运行时应用监控;
与云计算的天然集成。 - SpringBoot缺点
由于SpringBoot是基于spring框架进行再封装,需要掌握spring,更难理解。 - SpringBoot特点
简化Spring应用开发、约定大于配置、去繁从简。
二、热部署
- 缘由
SpringBoot如果不加热部署,当项目发生任何修改之后,必须重启Application类才能生效,比较麻烦。
使用热部署之后,当项目任何类发生修改,可以马上通过JVM类加载的方式,加载到最新的虚拟机中,不需要重启了。 - 热部署步骤
修改pom.xml,增加热部署依赖和maven插件。<!-- 热部署依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <!-- 当optional为true时,热部署生效 --> <optional>true</optional> </dependency> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin>
三、简单HelloWorld
浏览器发送 /hello 请求,服务器接收请求,然后响应 HelloWorld 字符串。
-
创建maven工程
Create New Project–>Maven–>第一次创建要绑定jdk环境–>next -
导入spring boot相关依赖
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
-
编写主程序类 HelloWorldApplication
package springboot.awen; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * @SpringBootApplication: 主程序类 * @author awen * / @SpringBootApplication public class HelloWorldApplication { public static void main(String[] args) { // 启动SpringBoot应用 SpringApplication.run(HelloWorldApplication.class, args); } }
-
编写Controller
package springboot.awen.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class HelloController { @ResponseBody @RequestMapping("/hello") public String hello(){ return "HelloWorld"; } }
-
运行主程序并测试
右击Run As --> Java Application。
浏览器地址栏请求localhost:8080/hello
,不需要加项目名。
四、深入探究spring boot
- 主程序类
- @SpringBootApplication:如果某个类加上这个注解,则说明这个类是spring boot启动类,通过运行这个main方法来启动该项目。
- @SpringBootConfiguration:SpringBoot的配置类
- @Configuration:表明这个类是配置类
- @ EnableAutoConfiguration:开启自动配置功能
- @AutoConfigurationPackage:自动配置包
- @ Import(EnableAutoConfigurationImportSelector.class):Spring底层注解,给容器中导入一个组件;导入的组件由AutoConfigurationPackages.Registrar.class将SpringBootApplication主配置类所在包及其所有子包里的所有组件扫描到spring容器。
- @Import(EnableAutoConfigurationImportSelector.class):给容器中导入组件
- EnableAutoConfigurationImportSelector:导入哪些组件的选择器。将所有需要导入的组件以全类名的方式返回,这些组件就会添加到容器中,会导入很多自动配置类XXXAutoConfiguration。
- @AutoConfigurationPackage:自动配置包
- pom.xml文件
父项目
spring-boot-starter-parent里的父项目:<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> </parent>
真正管理spring boot应用的所有依赖版本,我们导入依赖默认不需要写版本。
导入依赖<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>1.5.9.RELEASE</version> <relativePath>../../spring-boot-dependencies</relativePath> </parent>
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
- spring-boot-starter:场景启动器。spring boot会将相关功能场景抽取出来,形成一个个starter,只要引用其中某一个场景依赖,则这个相关的所有依赖都可以导进来。
- activemq:JMS消息服务
- amqp:高级消息队列
- aop:切面
- jqa:数据库访问
- redis:数据库访问缓存
- mail:邮件开发
- web:web开发
- spring-boot-starter-web:导入web模块正常运行所依赖的组件
五、SpringBoot项目目录结构
static:存放css、js、images等静态资源;
templates:存放模板页面;(Spring boot默认不支持JSP页面)(默认使用嵌入式的tomcat)
application.properties:存放配置;(可以修改默认配置)