• 框架——容器框架——spring_boot——Hello World


    第一步,创建项目,idea方式,或者是spring.io方式。略。

    第二步,项目关键点介绍。Pom文件,目录结构,@SpringBootApplication注解。

    第三步,运行项目。三种方式。

    1. IDE方式下,直接运行main方法即可。
    2. 当为jar包时,通过java -jar app.jar运行项目。
    3. 使用maven插件,运行mvn spring-boot:run

    1、pom文件

    Pom文件中的依赖有两种。

    第一种,spring-boot-starter-parent

    spring-boot-starter-parent有很多默认值。

    1. 默认的JDK版本为1.8
    2. 默认的字符集为UTF-8
    3. 添加其他spring-boot-start-*时,不在需要指定版本号,指定parent版本号即可。
    4. 添加了repackage的goal。goal是项目生命周期中的一个阶段
    5. 默认的resource filtering,运行resources:resource即会将资源文件中的变量替换为具体值。
    6. 添加了默认的一些插件,例如exec,shade
    7. 配置文件有默认的resource filtering。

    第二种,spring-boot-starter-*,自动注入的一些功能,例如web会注入starter-web, aop会注入starter-aop,数据源会注入starter-jdbc。

    2、目录结构

     典型的maven web目录结构,与spring boot框架无关。

    3、@SpringBootApplication

     它等价于@Configuration,@EnableAutoConfiguration,@ComponentScan注解。

    @Configuration表示它是一个配置类。

    @ComponentScan配置扫描bean的路径。默认值为classpath下的所有包

    @EnableAutoConfiguration注解的部分源码如下:

    @AutoConfigurationPackage
    @Import(AutoConfigurationImportSelector.class)
    public @interface EnableAutoConfiguration {//略}
    

      @AutoConfigurationPackage用于自动扫描相关的包。

    AutoConfigurationImportSelector中有个方法getCandidateConfigurations,调用getCandidateConfiguration---->SpringFactoriesLoader.loadFactoryNames--->loadSpringFactories,查看loadSpringFactories代码如下:

    Enumeration<URL> urls = (classLoader != null ? classLoader.getResources(FACTORIES_RESOURCE_LOCATION) : classLoader.getSystemResources(FACTORIES_RESOURCE_LOCATION));
    // 其中常量值
    public static final String FACTORIES_RESOURCE_LOCATION = "META-INF/spring.factories";
    

      它会加载spring-boot-autoconfiguration-version.jar包,META-INF目录下的spring.factories文件,这个文件就是spring boot自动注入的配置。

  • 相关阅读:
    mysql-03
    mysql-02
    mysql-01
    RESTFUL设计风格
    mysql水平拆分和垂直拆分
    redis连环夺命问
    Python 的十大重要特性
    吊打--redis
    python2和3 的区别
    tornado第一段代码
  • 原文地址:https://www.cnblogs.com/rain144576/p/16212773.html
Copyright © 2020-2023  润新知