一、SpringBoot简介
1、什么是springBoot
- springBoot 最最最核心的东西 核心装配
- springBoot是伴随Spring4.0的时候发布的一个框架
- springBoot来简化Spring应用的开发,约定大于配置,去繁从简,just run就能创建出一个独立的,产品级别的应用
- 背景:
- “spring全家桶”时代
- Spring-boot -> J2EE一站式解决方案【整合了很多spring技术栈】
- Spring Cloud ->分布式整体解决方案
3、SpringBoot优点
- 快速创建独立运行的Spring项目以及主流框架集成【一步完成,十分便捷】
- 使用嵌入式Servlet容器,应用无需打成war包【开发web应用时,无需达成war包,jar包也行】
- starters自动依赖于版本控制【自动管理】
- 大量的自动配置,简化开发,也可修改默认值【不需要写很多的配置文件】
- 无需配置xml,没有代码生成,开箱即用【没有xml,也不是用代码底层生成的xml,就是不需要配置】
- 准生产话环境的运行时应用监控【运维使用】
- 于云计算的天然集成
4、SpringBoot缺点
- SpringBoot是spring的一个再封装,如果不了解spring,那么学Springboot很费劲
二、微服务
1、什么是微服务
三、入门(不用这种)
浏览器发送一个hello请求,服务器接收请求并处理,响应Hello World字符串;【典型web应用】
- 创建一个maven项目,
不需要通过骨架进行创建 【或者一个jar骨架的,因为用的是内嵌的servlet】
- 导入Spring-boot相关依赖
```xml
org.springframework.boot spring-boot-starter-parent 1.5.9.RELEASE org.springframework.boot spring-boot-starter-web
3. **编写一个主程序;启动spring-boot应用**
1. 添加注解 @SpringBootApplication :告诉程序这是一个主程序类,说明这是一个springboot应用
1. 编写main方法
```java
@SpringBootApplication
public class HelloWorldApplication {
public static void main(String[] args) {
//spring应用启动起来,传入本类的的class,传入方法的参数
SpringApplication.run(HelloWorldApplication.class,args);
}
}
run()方法必须传入一个类的class,一个被 @SpringBootApplication
注解修饰的类
- 编写相关的controller,service
【注意 这的controller和service都要在上面那个main方法包下(也就说controller包是main的兄弟包)】
//控制器
@Controller
public class HelloController {
@RequestMapping("/hello") //映射路径
@ResponseBody //将视图转换为字符串输出到页面上
public String hello(){
return "helloWorld";
}
}
- 直接启动main方法
简化部署
- 在pom文件中加入插件
作用:将应用打包成一个可执行的jar包【无需在服务器安装tomcat 直接有jre环境就能执行】
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
在maven工具里面选择package,然后包就打好了,在target目录下 复制到桌面
- 在cmd下 使用cd命令 切换到jar包 所在目录下 使用命令 java -jar spring-boot-hello.jar即可
四、探究HelloWorld,为何这么便捷
1、Spring boot 版本仲裁中心【帮你管理大部分依赖】
在pom中的依赖有一个 parent 【父项目】(父相目一般都是做依赖管理的)
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
当你点击去会发现,他还依赖另一个父项目
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath>../../spring-boot-dependencies</relativePath>
</parent>
- 在他的父父项目中 有很多的依赖【真正管理Boot应用里面所有的依赖版本】
- 也可以叫他为Spring boot版本仲裁中心;
- 以后导入依赖默认是不需要写版本的。因为在springboot里面已经规定好了版本号
2、场景启动器
在pom中我们还导入了一个依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
- 帮我们导入了web模块正常运行所依赖的组件
- 可以通过导入别的启动器 实现别的功能 :https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-starter
- Spring boot将所有的功能长久都抽取出来,做成一个个starters(启动器) 只需要在项目里面引入这些starters相关场景的所有依赖都会导入进来【要用什么功能,就导入什么场景的启动器】
五、HelloWorld细节
1、主程序代码
//使用@SpringBootApplication注解来标注一个类,说明这是一个SpringBoot应用
@SpringBootApplication
public class HelloWorldApplication {
public static void main(String[] args) {
//spring应用启动起来
SpringApplication.run(HelloWorldApplication.class,args);
}
}
2、@SpringBootApplication注解:
- springBoot应用
- 标注在某一个类上
- 说明这个类是springboot的主配置类
- 运行这个类的main方法启动springBoot应用
**<br />
@SpringBootApplication注解是好多注解的组合 其中有
- @SpringBootConfiguration :Spring Boot的配置类 【标注在某个类上标识这个是springboot的配置类】
- @Configuration:spring的配置
- 配置类 == 配置文件;配置类也是容器中的一个对象@Component创建的
@EnableAutoConfiguration :开启自动配置功能
- 以前需要配置的东西,现在都不需要配置了,Spring boot帮我们配置;
- @EnableAutoConfiguration告诉springboot开启自动配置功能;这样自动配置才能生效
它里面有一个@AutoConfigurationPackage 注解:自动配置包的注解
- @AutoConfigurationPackage里面还有一个@Import({Registrar.class})注解;
- @Import注解:spring的底层注解,给容器中导入一个组件,导入的组件由AutoConfigurationPackages.Register.class
【将com.yixuex.test下面的所有的包都扫描进去,也就是main方法的父级目录都扫进去了,所以能够扫到controller,所以controller才必须要放在main方法的同级目录中】
@Import({Registrar.class})给容器中导入组件[对象]
六、更加快速创建springboot
通过IDEA的创建向导来更快的创建SpringBoot项目
- 所有的IDE都支持使用spring Initializer快速创建SpringBoot项目
- 选择我们需要的模块,向导会联网创建SpringBoot项目
- 这样连 启动方法都帮你写好了
- 一般我们都用Rest风格的uri,所以需要在方法上添加@ResponseBody
- 但是每个方法都加 就比较麻烦,所以我们直接在控制器类上添加@RestController注解 @RestController = @Controller + @ResponseBody
- @ResponseBody 将响应内容写进响应体
- 默认生成的Spring-boot项目:
- 主程序已经生成好了,只需要编写业务逻辑就行
- 配置文件夹中 【resources 】
- static:里面保存所有的静态资源 js,css,html,img
- templates:保存所有的模板页面;(SpringBoot默认是jar包,使用嵌入式的tomcat,默认是不支持JSP的)可以使用模板引擎(freemarker,thymeleaf)
- application.properties springboot应用的配置文件【端口号…】
- 可以修改一些默认配置