Spring Boot note_1

1.Spring Boot 简介


Spring Boot:简化Spring应用开发,约定大于配置。

Spring Boot->J2EE一站式解决方案

Spring Boot->分布式整体解决方案

2.微服务


2014年由martin fowler提出。

微服务:架构风格(服务微化)

一个应用是一组小型服务,可以通过HTTP的方式进行互通。

每个功能元素都是一个可独立替换和独立升级的软件单元。

微服务参考文档

3.配置


  1. JDK:1.7及以上

  2. maven:3.3以上版本

  3. IntellijIDEA

  4. SpringBoot

4.Spring Boot Hello World


  1. 新建项目

  2. 导依赖

    <parent>
            <artifactId>spring-boot-starter-parent</artifactId>
            <groupId>org.springframework.boot</groupId>
            <version>2.1.7.RELEASE</version>
        </parent>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <version>2.3.4.RELEASE</version>
            </dependency>
        </dependencies>
    
  3. 编写主程序,启动Spring Boot应用

    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class HelloWorldMainApplication {
        public static void main(String[] args) {
    
            //启动spring应用
            SpringApplication.run(HelloWorldMainApplication.class,args);
        }
    }
    
  4. 编写相关的Controller、Service

    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    @Controller
    public class HelloController {
    
        @ResponseBody    				//把"hello world"写给浏览器写给浏览器
        @RequestMapping("/hello")       //接收来自浏览器的hello请求
        public String hello(){
            return "Hello World!";
        }
    }
    
  5. 运行主程序测试

在这里插入图片描述

  1. 简化部署

    导入插件,将应用打包成可执行jar包

    <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <version>2.3.4.RELEASE</version>
                </plugin>
            </plugins>
        </build>
    

在这里插入图片描述

将生成的jar包直接拖到桌面上运行,检验可用。

在这里插入图片描述

  1. 踩坑:

在这里插入图片描述

解决方法:

版本不一致,在setting-Build,Execution,Deployment-Build Tools-Maven,更改Maven home directory为使用的版本,User setting file后勾选override选择对应配置文件并点击apply。

在这里插入图片描述

5.分析


1.pom文件
1.父项目
<parent>
        <artifactId>spring-boot-starter-parent</artifactId>
        <groupId>org.springframework.boot</groupId>
        <version>2.1.7.RELEASE</version>
  </parent>

它的父项目是
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-dependencies</artifactId>
    <version>2.1.7.RELEASE</version>
    <relativePath>../../spring-boot-dependencies</relativePath>
</parent>
负责真正管理spring boot应用里面的所有依赖版本
称 Spring Boot的版本仲裁中心,以后我们导入依赖默认不需要写版本(但是没有在dependencies里面管理的依赖依然要声明版本)
2.启动器
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.3.4.RELEASE</version>
</dependency>

spring-boot-starter

Spring Boot场景启动器;帮我们导入了web模块正常运行所依赖的组件。

Spring Boot将所有的功能场景都抽取出来,做成一个个的starters(启动器),只需要在项目里引入这些starter,相关场景的所有依赖都会导入进来,而且由Spring Boot自动进行版本控制。

2.主程序类
@SpringBootApplication
public class HelloWorldMainApplication {
    public static void main(String[] args) {
        //启动spring应用
        SpringApplication.run(HelloWorldMainApplication.class,args);
    }
}

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

@java.lang.annotation.Target({java.lang.annotation.ElementType.TYPE})
@java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
@java.lang.annotation.Documented
@java.lang.annotation.Inherited
@org.springframework.boot.SpringBootConfiguration
@org.springframework.boot.autoconfigure.EnableAutoConfiguration
@org.springframework.context.annotation.ComponentScan(excludeFilters = {@org.springframework.context.annotation.ComponentScan.Filter(type = org.springframework.context.annotation.FilterType.CUSTOM, classes = {org.springframework.boot.context.TypeExcludeFilter.class}), @org.springframework.context.annotation.ComponentScan.Filter(type = org.springframework.context.annotation.FilterType.CUSTOM, classes = {org.springframework.boot.autoconfigure.AutoConfigurationExcludeFilter.class})})
public @interface SpringBootApplication {

@SpringBootConfiguration:Spring Boot的配置类

@Configuration:标志配置类的注解,配置类也是组件(@Component)

@EnableAutoConfiguration:开启自动配置

​ Spring Boot自动配置。

@org.springframework.boot.autoconfigure.AutoConfigurationPackage
@org.springframework.context.annotation.Import({org.springframework.boot.autoconfigure.AutoConfigurationImportSelector.class})
public @interface EnableAutoConfiguration {

@AutoConfigurationPackage:自动配置包

@Import({AutoConfigurationPackages.Registrar.class})

@Import 是 Spring Boot的底层注解之一,用于给容器导入一个组件,导入的组件由AutoConfigurationPackages.Registrar.class指定,

配置方法:将主配置类(@SpringBootApplication标注的类)的所在包及下面所有子包里面的所有组件扫描到spring容器。

@Import({AutoConfigurationImportSelector.class})

AutoConfigurationImportSelector:是导入组件的选择器,将所有需要导入的组件以全限定类名的方式返回,这些组件就会被添加到容器中;会给容器中导入非常多的自动配置类(XXXAutoConfiguration),即导入并配置好这个场景所需要的所有组件,免去手动编写配置注入功能组件等工作。
在这里插入图片描述
Spring Boot在启动的时候从类路径下的META-INF/spring.foctories中获取EnableAutoConfiguratuion指定的值,将这些值作为自动配置类导入到容器中,然后自动配置类生效。
META-INF/spring.foctories

6.使用Spring Initializer快速创建Spring Boot项目


create-Spring Initializer-命名-选择模块-向导联网创建

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值