zoukankan      html  css  js  c++  java
  • springboot的使用

    1.@SpringBootApplication 来标注一个主程序类,说明这是一个Spring Boot应用

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

      @SpringBootConfiguration 标注在某个类上,表示这是一个Spring Boot的配置类;

      @EnableAutoConfiguration 开启自动配置功能

      以前我们需要配置的东西,Spring Boot帮我们自动配置;@**EnableAutoConfiguration**告诉SpringBoot开启自动配置功能;这样自动配置才能生效;

        @AutoConfigurationPackage  自动配置包 

          该注解的主要功能就是将@SpringBootAplication标注的类及下面所有子包里面的所有组件扫描到Spring容器

        @Import(EnableAutoConfigurationImportSelector.class)

           给容器中导入组件

           EnableAutoConfigurationImportSelector:导入哪些组件的选择器

           将所有需要导入的组件以全类名的方式返回:这些组件就会被添加到容器中;

          会给需要导入的组件以全类名的方式返回;这些组件就会被添加到容器中;

                         会给容器中导入非常多的自动配置类(xxxAutoConfiguration);就是给容器中导入这个场景需要的所有组件,并配置好这些组件;

          SpringBoot在启动的时候从类路径下的MEAT-INF/spring.factories中获取EnableAutoConfiguration指定的值,将这些值作为自动配置类导入到容器中,自动配置类就生效,帮我们进行自动配置工作;以前我们需要张加配置的东西,自动

          配置类都帮我们.

            

    2.配置文件加载位置

    SrpingBoot使用一个全局的配置文件,配置文件名是固定的;

    application.properties

    application.yml

    @PropertySource{“classpath:”}:指定外部的配置文件

    @ImportResource: 导入Spring的配置文件,让配置文件里面的内容生效(放在spring的朱配置类上面)

    SpringBoot推荐给容器添加组件的方式:推荐使用全注解的方式

    profile

    1.多profile环境

    我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml

    默认使用application.properties的配置;

    激活指定profile

    在配置文件中指定 spring.profiles.active=dev

    springboot开发之静态资源映射

    通过/webjars/**请求静态资源

      对于所有/webjars/**的请求,如果没有请求映射的处理方法(Controller)则当做静态资源请求处理,都去"classpath:/META-INF/resources/webjars/"中找资源:

    即对于所有的请求,如果没有映射到处理方法,会当做静态资源请求来处理,回去下面的这几个路径下去查找静态资源:

    静态资源文件夹:

    "classpath:/META-INF/resources/":

    "classpath:/resources/":

    "classpath:/static/":

    "classpath:/public/":

    "/":

    springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件(properties优先级高于yml

    –file:./config/    当前项目的config目录

    –file:./             当前项目下 

    –classpath:/config/  类路径下的config目录

    –classpath:/ 类路径下

    优先级由高到底,高优先级的配置会覆盖低优先级的配置;

    SpringBoot会从这四个位置全部加载主配置文件;**互补配置**;

    3.自动配置原理

    1)、SpringBoot启动的时候加载主配置类,开启了自动配置功能 ==@SpringBootApplication ==

    @EnableAutoConfiguration 作用

      利用EnableAutoConfigurationImportSelector给容器中导入一些组件

        查看selectImports()方法的内容

        List<String> configurations = getCandidateConfigurations(annotationMetadata, attributes);获取候选的配置      

        SpringFactoriesLoader.loadFactoryNames()
        扫描所有jar包类路径下 META-INF/spring.factories
        把扫描到的这些文件的内容包装成properties对象
        从properties中获取到EnableAutoConfiguration.class类(类名)对应的值,然后把他们添加在容器中

    springboot的精髓

      SpringBoot启动会加载大量的自动配置类

      我们看我们需要的功能有没有SpringBoot默认写好的自动配置类

      我们再来看这个自动配置类中到底配置了哪些组件

      给容器中自动配置类添加组件的时候,会从properties类中获取某些属性。我们就可以在配置文件中指定这些属性的值

    4.springboot的web开发

    Thymeleaf的使用

      默认的DEFAULT_PREFIX = "CLASSPATH:/templates"; 前缀

       默认的DEFAULT_SUFFIX = ".html";  后缀

    Thymeleaf的语法规则

      1.th:任意html属性;来替换原生属性的值 

      2.表达式

    5.如何修改SpringBoot的默认配置

      1.SpringBoot在自动配置很多组件的时候,先看容器中有没有用户自己配置的(@Bean,@Component)如果有就用用户配置的,如果没有,才自动配置;如果有些组件可以有多个(ViewResolver)将用户配置的和自己默认的组合起来

    拓展SpringMVC

    编写一个配置类(@Configuration),是WebMvcConfigurer类型;不能标注@EnableWebMvc

    @ConditionalOnClass(某个class位于类路径上,才会实例化一个Bean)

    只有当我们引入了相关的jar包,springboot才会将相应的对象加载到spring容器中去

  • 相关阅读:
    Java基础类库
    Java工具类之浮点精确计算
    liunx安装telnet
    java代码中执行liunx命令
    Java 7 新的 try-with-resources 语句,自动资源释放
    mysql中单表多timestamp设置default问题
    Linux top命令的用法详细详解
    JVM调优之jstack找出最耗cpu的线程并定位代码
    每天一个liunx命令10之nohup和xargs
    每天一个liunx命令10之nohup和xargs
  • 原文地址:https://www.cnblogs.com/lzh66/p/13628048.html
Copyright © 2011-2022 走看看