SpringBoot新手入门的快速教程

 更新时间:2019年12月29日 10:21:09   作者:SimpleWu  
这篇文章主要给大家介绍了关于SpringBoot新手入门的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用SpringBoot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

SpringBoot是什么?

SpringBoot是spring家族中微型框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。

Spring Boot可以轻松创建独立的,生产级的基于Spring的应用程序,您可以“运行”。

特征:

  • 创建独立的Spring应用程序
  • 直接嵌入Tomcat,Jetty或Undertow(无需部署WAR文件)
  • 提供自以为是的“入门”依赖项以简化构建配置
  • 尽可能自动配置Spring和第三方库
  • 提供生产就绪功能,例如指标,运行状况检查和外部化配置
  • 绝对没有代码生成,也不需要XML配置

SpringBoot要解决的问题?

随着Java语言的慢慢发展,Java的开发显得格外的笨重,繁多的配置,低下的开发效率,复杂的部署流程以及第三方技术集成难度非常大而且杂。

在上述环境中,SpringBoot营运而生,它使用“习惯由于配置”的理念让你的项目快速的运行起来,使用SpringBoot很容易创建一个独立运行。它内置Tomcat,Servlet,Spring等等基本开发的功能。

SpringBoot的优势?

快速构建项目,敏捷式开发

项目可独立运行,无须外部依赖Servlet容器。

对主流框架无配置支持,简化开发,也可以修改默认值。

提供运行时的应用监控。极大的提高了开发、部署效率。

与spring cloud天然集成。

限制:将现有或传统的Spring Framework项目转换为Spring Boot应用程序是一个非常困难和耗时的过程。它仅适用于全新Spring项目。

什么是微服务?

首先微服务并没有一个官方的定义,想要直接描述微服务比较困难。

它是一种“软件的架构风格”,一个应用应该是一组小型服务。各个小型服务运行在各自的环境中,通过http的方式进行互通。

微服务化的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底地去耦合,每一个微服务提供单个业务功能的服务,一个服务做一件事,从技术角度看就是一种小而独立的处理过程,类似进程概念,能够自行单独启动或销毁,拥有自己独立的数据库

每一个功能元素都是一个可以独立替换和可独立升级的软件单元。它的好处是就是可以任意组合。极大的增强了软甲架构的灵活性。

开启SpringBoot第一个项目

环境准备:

  • Jdk8.0以上。
  • Maven3.x以上,需要设置jdk8的运行环境。
  • 开发工具:sts、idea。

快速启动一个SpringBoot项目:

使用idea首先

填写坐标:

在这里可以根据自己需要的什么功能选择什么启动器,我这里就单选一个Web模块。

创建完成后目录:

他会默认帮我们生成一个主程序类,我们可以直接通过主程序入口启动SpringBoot

默认在resources模板下面会生成一下几个目录和文件。

static:主要用来保存所有的静态资源,包括js,css,image等。

templates:保存所有的模板页面。SpringBoot默认以jar包的方式来部署项目,所以默认是不支持jsp页面的,但是可以使用模板引擎(freemarker,thymeleaf)。

application.properties:Spring Boot默认的配置文件。默认情况下SpringBoot是不需要配置文件的,但是可以通过这个类修改默认值。比如修改端口号。

application.properties或者application.yml将会是核心的配置文件。

在SpringBoot中,必须继承spring-boot-starter-parent这个包,这个是SpringBoot的默认配置信息,极大的提高了我们的开发效率。

/**
 * Author: SimpleWu
 * date: 2018/11/27
 */
//@RestController
@Controller
public class HelloController {

 @ResponseBody
 @RequestMapping(value = "hello")
 public String hello(){
 return "SpringBoot ------- hello";
 }
}

运行方式:

1.直接使用Idea运行主程序

2.使用maven命令打成jar包在控制台使用 java -jar **.jar来运行。不需要另外安装tomcat等其他工具,极大的简化了部署流程。

注意事项:

在SpringBoot中,我们只需要使用@SpringBottApplication注解修饰入口方法类,然后运行main方法就可以启动Springboot,非常方便。

注意:如果去掉@SpringBootApplication注解,则会运行错误。

我们主程序SpringbootHellowroldApplication.java是在package com.simple.springboot;下

默认它只会扫描到同包或者子包下。

SpringBoot启动器

在SpringBoot中,有一个非常重要的概念,就叫“场景启动器”,它帮助我们导入对应模块正常运行所依赖的组件。SpringBoot将所有的功能场景都抽取出来,做成一个个的Starters(启动器),只需要在项目中引入这些starter相关场景的所依赖的环境都会导入进来。要什么功能就导入什么样的启动器。

@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) })
public @interface SpringBootApplication {

@SpringBootConfiguration翻译下就是SpringBoot配置继承自@Configuration,二者功能也一致,标注当前类是配置类,
并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到spring容器中,并且实例名就是方法名

@EnableAutoConfiguration:翻一下就是开启自动配置的意思,开启自动配置功能。以前我们需要配置的东西,现在我们都不需要配置了,SpringBoot帮我们自动配置了。注解中又包含了两个比较重要:

  • @AutoConfigurationPackage:自动配置包,通过@Import(AutoConfigurationPackages.Registrar.class)类来指定对应的包。默认是将@SpringBootApplication所在的包以及该包下的所有子包导入到容器中。
  • @Import(AutoConfigurationImportSelector.class):导入哪些组件的选择器。将所有需要导入的组件以全类名的方式返回,这些组件将会返回给一个List configurations集合中,这些类是各种组件的自动配置文件,然后被添加到容器中。

SpringBoot自动配置

SpringBoot中最核心的功能就是自动配置类,在SpringBoot中会加载大量的自动配置类。

我们可以查看我们需要的功能有没有SpringBoot默认写好的自动配置类。如果有就不需要配置了,如果没有,可以根据对应的XxxProperties类查看相关的属性

然后再配置文件对修改对应的属性值即可。

以@Conditional开头的表示的是条件类。以Properties结尾的表示的是对应的属性类。

我们通过SpringBoot会加载大量的AutoConfiguration配置类,其中对应相关组件的配置信息。

该类是通过全注解方式来配置相关的属性。

在这个配置类中,我们也可以看到一些@Conditional开头和以Properties结尾的类。

Conditional扩展:

在SpringBoot自动配置类中存在大量的@Conditional开头的注解,这些注解的作用是当满足某些条件时,该注解才会生效。

虽然默认情况下加载了非常多的自动配置类文件,但是由于Conditional的限制,并不会加载所有的配置类。可以通过在application.properties文件中设置debug=true打开SpringBoot的日志信息来查看加载了哪些自动配置类。

@Conditional扩展注解 作用(判断是否满足当前指定条件)
@ConditionalOnJava 系统的java版本是否符合要求
@ConditionalOnBean 容器中存在指定Bean;
@ConditionalOnMissingBean 容器中不存在指定Bean;
@ConditionalOnExpression 满足SpEL表达式指定
@ConditionalOnClass 系统中有指定的类
@ConditionalOnMissingClass 系统中没有指定的类
@ConditionalOnSingleCandidate 容器中只有一个指定的Bean,或者这个Bean是首选Bean
@ConditionalOnProperty 系统中指定的属性是否有指定的值
@ConditionalOnResource 类路径下是否存在指定资源文件
@ConditionalOnWebApplication 当前是web环境
@ConditionalOnNotWebApplication 当前不是web环境
@ConditionalOnJndi JNDI存在指定项

总结:

SpringBoot是一个微服务框架,延续了spring框架的核心思想IOC和AOP,简化了应用的开发和部署。

SpringBoot 并不是用来替代 spring的解决方案,而是和 spring框架紧密结合用于提升 spring开发者体验的工具。

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

相关文章

  • 解决springboot 获取form-data里的file文件的问题

    解决springboot 获取form-data里的file文件的问题

    这篇文章主要介绍了解决springboot 获取form-data里的file文件的问题的相关资料,这里提供了详细的解决步骤,需要的朋友可以参考下
    2017-07-07
  • 基于SpringBoot和Vue实现头像上传与回显功能

    基于SpringBoot和Vue实现头像上传与回显功能

    在现代Web应用中,用户个性化体验尤为重要,其中头像上传与回显是一个常见的功能需求,本文将详细介绍如何使用Spring Boot和Vue.js构建一个前后端协同工作的头像上传系统,并实现图片的即时回显,需要的朋友可以参考下
    2024-08-08
  • 详解Java并发包中线程池ThreadPoolExecutor

    详解Java并发包中线程池ThreadPoolExecutor

    ThreadPoolExecutor是Java语言对于线程池的实现。线程池技术使线程在使用完毕后不回收而是重复利用。如果线程能够复用,那么我们就可以使用固定数量的线程来解决并发问题,这样一来不仅节约了系统资源,而且也会减少线程上下文切换的开销
    2021-06-06
  • JAVA中出现异常、抛出异常后续代码是否执行情况详析

    JAVA中出现异常、抛出异常后续代码是否执行情况详析

    当产生异常后,并在异常处理器中进行执行之后,程序会是如何的一种状态,是终止还是继续执行处理之后的代码呢,下面这篇文章主要给大家介绍了关于JAVA中出现异常、抛出异常后续代码是否执行情况的相关资料,需要的朋友可以参考下
    2024-05-05
  • 一文详解Java中的Stream的汇总和分组操作

    一文详解Java中的Stream的汇总和分组操作

    这篇文章主要为大家详细介绍了Java8中的Stream的汇总和分组的操作,文中的示例代码讲解详细,对我们学习Java有一定帮助,需要的可以参考一下
    2022-09-09
  • Lambda表达式下访问外部变量问题

    Lambda表达式下访问外部变量问题

    这篇文章主要介绍了Lambda表达式下访问外部变量问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Maven2环境安装与准备工作详解

    Maven2环境安装与准备工作详解

    这篇文章主要为大家详细介绍了Maven2环境安装与准备工作,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • Java遍历Json的简单实例

    Java遍历Json的简单实例

    这篇文章主要介绍了Java遍历Json的简单实例,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Spring Event观察者模式事件监听详解

    Spring Event观察者模式事件监听详解

    这篇文章主要介绍了Java Spring Event事件监听详情解析,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • Java多线程编程中synchronized线程同步的教程

    Java多线程编程中synchronized线程同步的教程

    Java的synchronized关键字可以修饰方法和对象来构建线程间的同步,这里我们就来共同学习Java多线程编程中synchronized线程同步的教程:
    2016-07-07

最新评论