Spring Boot基础

Spring Boot简介

            Spring Boot用于简化Spring应用开发,基于约定大于配置的思想。使用Spring Boot可以更容易创建一个独立运行、生产环境的Spring应用。Spring Boot应用只需要非常少的Spring配置。

Spring Boot优点

1.快速创建独立运行的Spring应用以及与主流的框架集成。
2.使用嵌入式的Servlet容器,应用无需打成war包。
2.starters自动依赖及版本控制。
4.大量的自动配置,简化开发,也可修改默认配置。
5.无需配置XML,无代码生成,开箱即用。
6.准生产环境的运行时应用监控。
7.与云计算的天然集成。

Spring Boot实例

1.利用idea的spring初始化器创建maven工程。
在这里插入图片描述
在这里插入图片描述
Application类是整个springboot应用的主启动的类。

package com.fengxunxinxi.springboot;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

主启动类中有一个主函数,运行改主函数便可启动springboot应用。
2.编写controller、service
在com.fengxunxinxi.springboot.controller下编写一个处理器。
在这里插入图片描述

package com.fengxunxinxi.controller;


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;


@Controller
public class HelloController {

    
    @ResponseBody
    @RequestMapping(value = "/hello")
    public String hello(){
          return "Hello World";
    }
}

3.启动应用
运行主启动类的主函数。
在这里插入图片描述
4.测试
在浏览器输入localhost:8080/hello访问服务。
在这里插入图片描述
5.打包引用
在pom.xml中初始化器将打包插件已导入应用。

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

点击idea右边栏的Maven Project。
在这里插入图片描述
运行生命周期内的package。
在这里插入图片描述
打包完成后,jar包位于项目的target目录中,jar包名为spring-boot-0.0.1-SHAPSHOT.jar。
在这里插入图片描述
运用java -jar命令可以运行jar包。

java -jar spring-boot-0.0.1-SNAPSHOT.jar

在这里插入图片描述

POM.XML解析

1.父项目

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.9.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
</parent>

该父项目依赖于以下项目

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

在spring-boot-dependencies中有个properties属性,在这个属性中定义了相关依赖的版本。
在这里插入图片描述
spring-boot-dependencies可以成为springboot的版本仲裁中心。

2.web场景依赖

<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将所有的功能场景都抽取出来。做成一个个Starter(场景启动器)。只需在项目中引入相关starter,就可把相关场景的所有依赖全部导入。

主启动类解析

1.@SpringBootApplication注解
该注解表明该应用是一个spring-boot应用。所标明的类为主配置类。可以使用该类的main()方法启动spring-boot应用。@SpringBootApplication注解是一个组合注解,由多个注解组成。

@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:Spring Boot配置类;该注解标注的类表示为Spring Boot的配置类。
@SpringBootConfiguration也是多个注解的组合。

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration

@Configuration:配置类标注该注解。配置类是对配置文件的取代。配置类也是容器中的一个组件。

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component

2.@EnableAutoConfiguration注解
该注解表明开启自动配置功能,Spring Boot帮助完成自动配置。

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

@EnableAutoConfiguration包含一个@AutoConfigurationPackage注解。
@AutoConfigurationPackage:自动配置包。

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@Import({Registrar.class})

@Import是Spring底层注解,负责给容器中导入一个组件。导入的组件由Registrar.class决定。
Registrar.class类中包含一个registerBeanDefinitions()方法
在这里插入图片描述
对(new AutoConfigurationPackages.PackageImport(metadata)).getPackageName()进行计算;
在这里插入图片描述
得到的是主启动类(@SpringBootApplication注解标注的类)所在包的包名。其主要作用是将主启动类所在包及其子包中的所有组件加入到Spring容器中。

@EnableAutoConfiguration包含一个@Import({AutoConfigurationImportSelector.class})
在AutoConfigurationImportSelector.class中包含一个selectImports()方法,该方法主要用于选择那些组件需要导入。将所有需要导入的组件以全类名返回,相关组件就会加入到容器中。

Spring boot启动的时候从类路径下的META-INF/spring.factorities中获取EnableAutoConfiguration指定的值,将这些值作为自动配置类加入到容器中,自动配置就生效了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值