美文网首页
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