Spring Boot 简介与入门(2.1.6版)
Spring Boot 2.1.6 版
与时俱进是每一个程序员都应该有的意识,当一个Java程序员在当代遍布的时候,你就行该意识到能多学点什么。可观的是后端的框架是稳定的,它们能够维持更久的时间在应用中,而不用担心技术的更新换代。但是类似SSH,SSM这些框架已经太久了,人们迫不及待地想使用更为优雅而又简便的框架来代替,所以SpringBoot运用而生。
Spring Boot是Spring家族中的一个全新的框架,它用来简化Spring应用程序的创建和开发过程。采用Spring Boot可以非常容易和快速的构建基于Spring框架的应用程序,它让编码变简单,配置变简单,部署变简单,监控变简单。正因为Spring Boot能够化繁为简,让开发变得极其快捷,所以在业界备受关注。目前Spring Boot在国内的关注趋势也日渐超过Spring。
学习条件
SpringBoot框架是应用在Spring Framework框架的基础上,对Spring Framework框架的进行优化和升级成为了新的框架。既SpringBoot是构建在Spring Framework框架的基础之上,所以想要学好SpringBoot-那么你肯定要掌握Spring Framework。
介绍
Spring Boot概述
Spring框架功能很强大,但是就算是一个很简单的项目,我们也要配置很多东西。因此就有了Spring Boot框架,它的作用很简单,就是帮我们自动配置。Spring Boot框架的核心就是自动配置,只要存在相应的jar包,Spring就帮我们自动配置。如果默认配置不能满足需求,我们还可以替换掉自动配置类,使用我们自己的配置。Spring Boot不是对Spring的增强,而是一个快速使用Spring进行开发的框架。Spring Boot 旨在帮助开发者快速搭建 Spring 框架。
使用Spring Boot可以很容易创建一个独立运行(运行jar,内嵌servlet容器)、准生产级的基于Spring框架的项目,使用Spring Boot我们可以不用甚至只需要很少的Spring配置。另外,Spring Boot还集成了嵌入式的Web服务器,系统监控等很多有用的功能,让我们快速构建企业级应用程序。
微服务是未来发展的趋势,Spring Boot 是项目微服务化发展的基石。
以上观点也是我们为什么要学习SpringBoot的关键点。
Spring Boot核心功能
独立运行的Spring项目
Spring Boot可以以jar包形式直接运行,如 java -jar xxx.jar
优点是:节省服务器资源
内嵌Tomcat和Jetty容器
Spring Boot可以选择内嵌Tomcat,Jetty,这样我们无须以war包形式部署项目。
提供一个starter POMs来简化Maven配置
例如引入spring-boot-starter-web时会自动引入
spring-boot-starter-parent是一个特殊Start,它用来提供相关的Maven依赖项,使用它之后,常用的包依赖可以省去version标签。
自动配置Spring
Spring Boot会根据在类路径中的jar包,类,为jar包里的类自动配置Bean,这样会极大减少我们要使用的配置。当然SpringBoot只考虑了大部分开发场景,并不是所有的场景,如果在实际的开发中我们需要自动配置Bean,而Spring Boot不能满足,则可以自定义自动配置。
准生产的应用监控
Spring Boot提供基于http,ssh,telnet对运行时的项目进行监控。
无代码生成和xml配置
Spring Boot大量使用spring4.x提供的注解新特性来实现无代码生成和xml配置。 spring4.x提倡使用Java配置和注解配置组合,而Spring Boot不需要任何xml配置即可实现spring的所有配置。
综上我们可以得出:Spring Boot让开发变得简单,让部署变得简单,让监控变得简单,让配置变得更简单。
快速入门
Spring Boot 2.1.6.RELEASE需要Java 8,并且与Java 11兼容(包括在内)。
还需要Spring Framework 5.1.8.RELEASE或更高版本。
第一个 Spring Boot 项目
创建项目
编写 pom.xml
根据官网 Spring Boot 文档提示从
spring-boot-starter-parent项目继承并向一个或多个
Starters声明依赖项。Spring starter 是 Spring Boot 的核心,可以理解为一个可拔插式的插件,例如,你想使用Reids插件,那么可以使用 spring-boot-starter-redis;如果想使用MongoDB,可以使用 spring-boot-starter-data-mongodb。
<!-- 引入springboot父类依赖 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.6.RELEASE</version> </parent> <dependencies> <!-- springboot-web 组件 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
HelloWorld
HelloWorldController.java
package com.springboot.controller; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.HashMap; import java.util.Map; // 表示该服务接口全部返回 json 格式 默认每个方法都加了 @ResponseBody @RestController // 表示所扫描到的服务 @EnableAutoConfiguration public class HelloWorldController { @RequestMapping("/hello") public String hello() { return "hello"; } @RequestMapping("/getMap") public Map<String, Object> getMap() { Map<String, Object> resultMap = new HashMap<>(); resultMap.put("code", "200"); resultMap.put("msg", "成功"); return resultMap; } // 主函数运行 springboot 项目 public static void main(String[] args) { SpringApplication.run(HelloWorldController.class, args); } }
结果
...... . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.1.6.RELEASE) ...... ...Registering beans for JMX exposure on startup ...Tomcat started on port(s): 8080 (http) ...Started HelloWorldController in 5.806 seconds (JVM running for 10.606)
Spring Boot 第二种启动方式
项目中肯定不止一个 Controller,我们当然希望项目启动时将所有的 Controller 全部加载进来,这种情况又该如何配置呢?比如此时有两个 Controller,都需要被执行。
HelloWorldController.java
package com.springboot.controller; import org.springframework.boot.SpringApplication; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.HashMap; import java.util.Map; @RestController public class HelloWorldController { @RequestMapping("/hello") public String hello() { return "hello"; } @RequestMapping("/getMap") public Map<String, Object> getMap() { Map<String, Object> resultMap = new HashMap<>(); resultMap.put("code", "200"); resultMap.put("msg", "成功"); return resultMap; } }
IndexController.java
package com.springboot.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class IndexController { @RequestMapping("/index") public String index() { return "index"; } }
App.java
package com.springboot.app; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.context.annotation.ComponentScan; // 扫描指定包下的服务 @ComponentScan("com.springboot.controller") // 表示所扫描到的服务 @EnableAutoConfiguration public class App { // 项目中不需要有多个 main 方法只需要有一个入口就可以了 public static void main(String[] args) { // 主函数运行 springboot 项目 SpringApplication.run(App.class, args); } }
删除其他服务的主函数 main(),只保留一个即可。
并且删除其他服务的
@EnableAutoConfiguration注解,只在主函数服务中添加。
通过
@ComponentScan注解扫描你需要的服务。
启动
App.java,其他两个服务也可以访问到了。
Spring Boot 第三种启动方式
开发中,我们经常使用以下3个注解注解 main 类。
分别是
@Configuration,
@EnableAutoConfiguration,
@ComponentScan。由于这些注解一般都是一起使用,Spring Boot 便提供了一个统一的注解
@SpringBootApplication。
需要注意的是:
@SpringBootApplication只能扫描同级包下。
不同包下的可以使用
@SpringBootApplication结合
@EnableAutoConfiguration,
@ComponentScan扫描注入。
其中
@ComponentScan很有用,可以通过该注解指定扫描某些包下包含如下注解的 Beans:
@Component,
@Service,
@Repository,
@Controller,
@Entity等等均自动注册为 Spring Beans。
App.java
package com.springboot.app; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ComponentScan; // 相当于 @ComponentScan("com.springboot.app") 只扫描同级包下 // 解决办法提升当前App类的包范围("com.springboot"),或者结合 @ComponentScan使用 @SpringBootApplication // 扫描指定包下的服务 @ComponentScan("com.springboot.controller") public class App { // 项目中不需要有多个 main 方法只需要有一个入口就可以了 public static void main(String[] args) { // 主函数运行 springboot 项目 SpringApplication.run(App.class, args); } }
✍️本章节到这里就结束了,喜欢的话就点赞?加转发?吧,我们下章节再见?。
- 点赞 2
- 收藏
- 分享
- 文章举报
- SpringBoot-从入门到放弃(一) 简介与helloworld
- Spring Boot / Spring MVC 入门实践 (二) :MVC与Spring MVC简介
- 【Spring Boot】 从入门到熟练,从简介到集成
- Spring Boot / Spring MVC 入门实践 (二) :MVC与Spring MVC简介
- JAVAEE——SpringBoot入门:简介、微服务、环境准备、helloworld与探究、快速构建项目
- SpringBoot HATEOAS用法简介(入门)
- Springboot入门——微服务简介
- SpringBoot实战(入门简介)读书笔记
- springBoot(一)简介与入门
- Spring Boot简介 & 入门
- Spring Boot 简介(入门篇)
- SpringBoot入门—简介及helloworld
- Springboot之入坑记录一:简介
- SpringBoot系列(一)SpringBoot简介
- spring boot入门 -- 介绍和第一个例子
- Spring Boot 入门
- springboot入门之mybatis
- Java Web编程入门--spring boot 默认首页
- 最简单的 Spring Boot 入门指南
- SpringBoot+thymelates入门