springboot
springboot优点:
- 快速创建独立运行的spring项目以及主流框架集成
- 使用嵌入式servlet容器,应用无需打包war包
- starters自动依赖控制版本
- 大佬自动配置,简化开发,也可修改默认值
- 无需配置xml,无代码生成,开箱即用
- 准生产环境的运行时应用监控
- 与云计算的天然集成
- 一、springboot入门
- springboot简介
- 简化spring应用开发的一个框架
- 整合spring技术栈的大整合
- j2EE开发的一站式解决方案
- 微服务---一种架构风格
- 一个应用应该是一种小型服务,可以通过http的方式进行互通
- 每一个功能元素最终都是一个可独立替换和独立升级的软件
- jdk 1.8 javaversion 1.8.0_112
- maven3.3以上版本:Apache Maven 3.39
- IDEA2017
- springboot 1.5.9.Release:1.5.9统一环境
- 二、操作
- 设置maven
- 设置setting
- 设置maven
- spring boot HelloWorld
- 一个功能
- 浏览器发送hello请求,服务器接受请求并处理,响应HelloWorld字符串;
- 创建一个maven工程;(jar)
- 导入springboot相关依赖
-
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.3.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
- 编写一个主程序:启动springboot应用
- 编写相关的Controller,Service
- 运行主程序测试
- 简化部署 ----创建一个可执行jar
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
双击package,打包,会在下面生成一个目录,里面是一个jar,可以拖到桌面,命令行执行jar,也可以运行
- 三、Hello World探究
- POM文件
- 父项目
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.3.RELEASE</version> </parent>
他的父项目:<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.5.3.RELEASE</version>
<relativePath>../../spring-boot-dependencies</relativePath>
</parent>
他真正管理springboot应用里面的所有依赖版本springBoot的版本仲裁中心;以后我们导入依赖默认是不需要写版本;(没有在dependencies里面管理的依赖自然要声明版本号)
- 导入的依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
spring-boot-starter-web
-
spring-boot-starter:spring-boot场景启动器;帮我们导入web模块正常运行所依赖的组件;
- springboot将所有功能场景都抽取出来,做成一个个的starts(启动器),只需要在项目里面引入这些starter相关场景的所有依赖都会导入进来,要用什么功能,就导入什么场景启动器
-
- 父项目
- 主程序类,主入口类
/** * @SpringBootApplication来标注一个主程序,说明这是一个springboot应用 */ @SpringBootApplication public class HelloWorldMainApplication { public static void main(String[] args) { //spring应用启动起来 SpringApplication.run(HelloWorldMainApplication.class,args); } }
@SpringBootApplication springboot应用标注在某个类上,说明这个类是springboot的主配置类,springboot就应该运行这个类的main方法来启动springboot应用;
@Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan( excludeFilters = {@Filter( type = FilterType.CUSTOM, classes = {TypeExcludeFilter.class} ), @Filter( type = FilterType.CUSTOM, classes = {AutoConfigurationExcludeFilter.class} )} )
@SpringBootConfiguration springboot的配置类 标注在某个类上,表示这是一个springboot的配置类
-
- @Configuration :配置类上标注这个注解
- 配置类---配置文件 配置类也是容器中的一个组件 @Component
-
@EnableAutoConfiguration :开启自动配置功能; 以前需要配置的东西,springboot帮我们配置,
@Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @AutoConfigurationPackage @Import({EnableAutoConfigurationImportSelector.class})
@AutoConfigurationPackage 自动配置包
@Import({EnableAutoConfigurationImportSelector.class}) ---springboot底层注解,给容器中导入一个组件,由括号里决定导入什么,, 将主配置类所在包以及子包扫码到spring容器