Spring Boot(一)——Spring Boot入门

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/vae1314chuanchen/article/details/80186470

一、Spring Boot简介

1、Spring Boot是什么

Spring Boot 是一个轻量级框架,可以完成基于 Spring 的应用程序的大部分配置工作。
  
  Spring Boot 简化了基于Spring的应用开发,通过少量的代码就能创建一个独立的、产品级别的Spring应用。 Spring Boot为Spring平台及第三方库提供开箱即用的设置,这样你就可以有条不紊地开始。多数Spring Boot应用只需要很少的Spring配置。
  
  你可以使用Spring Boot创建Java应用,并使用 java -jar启动它或采用传统的war部署方式。同时 Spring Boot 也提供了一个运行“spring 脚本”的命令行工具。
  
  Spring Boot 主要的目标是:

  • 为所有Spring开发提供一个更快更广泛的入门体验;
  • 开箱即用,不合适时也可以快速抛弃;
  • 提供一系列大型项目常用的非功能性特征,比如:嵌入式服务器、安全性、度量、运行状况检查、外部化配置等;
  • 零配置(无冗余代码生成和XML强制配置 ,遵循“约定大于配置”);
      
    简言之,抛弃了传统JavaEE项目繁琐的配置、学习过程,让开发过程变得 so easy!

2、Spring Boot不是什么

与 Spring 框架的关系
  Spring 框架的关系通过 IOC 机制来管理bean。Spring Boot 依赖 Spring 框架来管理对象的依赖。 Spring Boot并不是Spring的精简版本,而是为使用Spring做好各种产品级准备。

与 SpringMVC 框架的关系
  SpringMVC 实现了 Web项目中的 MVC模式。如果Spring Boot是一个 Web项目的话,可以选择采用 SpringMVC 来实现 MVC模式。当然也可以选择其他类似的框架。

与 Spring Cloud 框架的关系
  Spring Cloud 框架可以实现一整套分布式系统的解决方案(当然其中也包括微服务架构的方案),包括服务注册、服务发现、监控等,而Spring Boot只是作为开发单一服务的框架的基础。

二、从一个HelloWorld入门Spring Boot

1、创建一个maven工程

2、导入Spring Boot相关的依赖

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.1.RELEASE</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

3、编写一个主程序,用来启动Spring Boot应用

/**
 *  @SpringBootApplication 来标注一个主程序类,说明这是一个Spring Boot应用
 */
@SpringBootApplication
public class HelloWorldMainApplication {

    // Spring应用启动起来
    public static void main(String[] args) throws Exception {
        SpringApplication.run(HelloWorldMainApplication.class, args);
    }
}

4、编写相关的Controller、Service

@Controller
public class HelloController {
    @RequestMapping("/hello")
    @ResponseBody
    public String hello(){
        return "Hello World";
    }
}

5、运行主程序测试

6、简化部署

可以在pom.xml文件中添加以下代码(插件)。这个插件可以将这个应用打成jar包,直接使用java -jar的命令进行执行。

    <!--这个插件,可以将应用打包成一个可执行的jar包-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

三、Hello World探究

1、pom文件中的父项目

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.1.RELEASE</version>
    </parent>

点击spring-boot-starter-parent,查看他的父项目是:

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-dependencies</artifactId>
        <version>2.0.1.RELEASE</version>
        <relativePath>../../spring-boot-dependencies</relativePath>
    </parent>

spring-boot-dependencies来真正管理Spring Boot应用里面的所有依赖版本。他是Spring Boot的版本仲裁中心,以后我们导入依赖默认是不需要写版本的(没有在dependencies里面管理的依赖自然需要声明版本号)。

2、Spring Boot中的场景启动器

Spring Boot通过Starter来提供系统级服务,Spring Boot已经提供了一系列的Starter,比如需要开发一个Web应用,只需要在pom.xml文件中添加以下声明即可。

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

注: spring-boot-starter:spring-boot场景启动器;spring-boot-starter-web:帮我们导入了web模块正常运行所依赖的组件。
  Spring Boot将所有的功能场景都抽取出来,做成一个个的starters(启动器),只需要在项目里面引入这些starter 相关场景的所有依赖都会导入进来。要用什么功能就导入什么场景的启动器,Spring Boot会自动为你配置好Spring需要的各种配置文件、依赖包、以及合适的版本。
  下面是Spring Boot提供的常用Starter,具体信息见官方文档:

https://docs.spring.io/spring-boot/docs/2.0.1.RELEASE/reference/htmlsingle/#getting-started-introducing-spring-boot

Strrter

扫描二维码关注公众号,回复: 3890174 查看本文章

3、主程序类

/**
 *  @SpringBootApplication 来标注一个主程序类,说明这是一个Spring Boot应用
 */
@SpringBootApplication
public class HelloWorldMainApplication {

    // Spring应用启动起来
    public static void main(String[] args) throws Exception {
        SpringApplication.run(HelloWorldMainApplication.class, args);
    }
}

@SpringBootApplication: Spring Boot应用标注在某个类上说明这个类是Spring Boot的主配置类,Spring Boot 就应该运行这个类的main方法来启动Spring Boot应用。

@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: Spring Boot的配置类;标注在某个类上,表示这是一个Spring Boot的配置类
@Configuration:配置类上来标注这个注解,表示这个类是一个配置类,用来取代Spring中的配置文件。配置类也是容器中的一个组件(@Component)。
@EnableAutoConfiguration:开启自动配置功能; 以前我们需要配置的东西,Spring Boot帮我们自动配置;@EnableAutoConfiguration告诉SpringBoot开启自动配置功能,这样自动配置才能生效。

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import({AutoConfigurationImportSelector.class})
public @interface EnableAutoConfiguration {

@AutoConfigurationPackage:自动配置包
@Import(AutoConfigurationPackages.Registrar.class)
Spring的底层注解@Import,给容器中导入一个组件;导入的组件由 AutoConfigurationPackages.Registrar.class;
将主配置类(@SpringBootApplication标注的类)的所在包及下面所有子包里面的所有组件扫描到Spring容器。

四、使用IDEA快速创建Spring Boot项目


在这里插入图片描述
在这里插入图片描述

五、参考资料

spring-boot-tutorial
Spring Boot 基础

猜你喜欢

转载自blog.csdn.net/vae1314chuanchen/article/details/80186470