美文网首页
Spring Boot 入门

Spring Boot 入门

作者: Tinyspot | 来源:发表于2022-10-06 22:48 被阅读0次

1. 基本概念

  • SpringBoot 是一个可以整合 Spring, SpringMVC, data-jpa 等框架的工具集
  • 整合第三方框架时,只需要导入相应的 start 依赖包,就自动整合了
  • SpringBoot 工程部署时,采用的是 jar 方式,内部自动依赖 Tomcat 容器

1.1 优缺点

  • Spring Boot 不是微服务技术,Spring Boot 只是一个用于加速开发 Spring 应用的基础框架(Spring Cloud 是微服务技术)
  • 如果要基于 Spring Boot 做微服务,相当于需要自己开发很多微服务的基础设施,比如基于 zookeeper 来实现服务注册和发现
  • 优点:
    1. 内嵌 Tomcat 和 Jetty 容器,不需要单独安装容器,jar 包直接运行
    2. 简化 Maven 配置
    3. 基于注解的零配置思想
    4. 和各种流行框架 spring web, mvc, Mybatis, Spring Cloud 无缝整合

2. SpringBoot 三种启动方式

方式一:直接运行 SpringApplication 类中的 main() 方法

方式二:maven 方式
在 SpringBoot 工程目录下运行 mvn spring-boot:run

方式三:jar包运行
首先将 springboot 项目打包为 jar, jar 放入任何地方都行,用 java -jar xxx.jar 运行

2.1 配置文件

  • application.properties
    • server.port=9999 等价在外部 java -jar xxx.jar --server.port=9999
  • application.yml
    • 严格遵循换行和空格
    • value 值一定要有空格 (port: + 空格 + 8080)
server:
  port: 8080

2.2 目录结构

  • src
    • main/java
    • test/java
  • resources
    • static
    • templates

3. Spring Boot 项目

3.1 启动类的注解

  • @SpringBootApplication(scanBasePackages = {"com.boot.train.log"})
  • 是一个组合注解
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(...)
public @interface SpringBootApplication {}

3.2 @SpringBootConfiguration

  • 代表启动类就是一个配置类

3.3 @EnableAutoConfiguration

  • 实现自动装配
  • SpringBoot 项目启动时,SpringFactoriesLoader 类(在 spring-core.jar)
public final class SpringFactoriesLoader {
    public static final String FACTORIES_RESOURCE_LOCATION = "META-INF/spring.factories";
    
    public static <T> List<T> loadFactories(Class<T> factoryType, @Nullable ClassLoader classLoader) {
        // ...
        for (String factoryImplementationName : factoryImplementationNames) {
            result.add(instantiateFactory(factoryImplementationName, factoryType, classLoaderToUse));
        }
        AnnotationAwareOrderComparator.sort(result);
        return result;
    }
}

在 spring-boot-autoconfigure.jar 的 spring.factories 文件里配置了 WebMvcAutoConfiguration

# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\
org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration

查看 WebMvcAutoConfiguration 类,实际是由 DispatcherServletAutoConfiguration 类实现加载

@AutoConfigureAfter({DispatcherServletAutoConfiguration.class, TaskExecutionAutoConfiguration.class, ValidationAutoConfiguration.class})
public class WebMvcAutoConfiguration {}

3.4 @ComponentScan

  • 扫描包

4. 若工程启动失败,但未打印异常日志

使用 try-catch

public static void main(String[] args) {
    try {
        SpringApplication.run(BootLogApplication.class, args);
    } catch (Exception e) {
        e.printStackTrace();
        // 不要用log, 因为此时日志打印不出来
    }
}

相关文章

网友评论

      本文标题:Spring Boot 入门

      本文链接:https://www.haomeiwen.com/subject/qlzpzltx.html