• Spring-boot01


    本文记录Spring-Boot学习途中的点点滴滴。
    其实Spring-Boot出来好长时间了,但是一直没去关注过。之前在我的印象里Spring-Boot好就好在减去了很多XML配置,加入了很多自动配置,将注解运用到了极致。想想好像也没啥技术点可以去学习,不过最近打算用spring-Boot做个小网站啥的,才突然发现
    Spring-Boot的强大。果真应了那句话:真香!

    1.先来说下Spring-Boot入门大法:
    按以往的项目经验,那没啥可说,MAVEN工程启动就完事儿了,但最近更新了下IDEA,发现项目启动项中多了一栏:

    去Spring官网看了看,发现这玩意儿简直太好了,用这个Spring启动项,它会将SpringWEB开发中要用到的一切组件场景都一一给你罗列出来,这下方便了不用再去写POM了。直接勾选web服务IDEA就为你自动配置好了。还有什么Springdata,Nosql,SQL....这些场景你只需勾选IDEA会帮你自动配置。
    这个插件实数良心。

    项目部署完成后,我一脸懵逼,啥?没有WEB-INF目录,写个锤子的WEB呀。我JSP放哪儿?
    果然太年轻,Spring-BOOT以JAR包的方式运行在内嵌的Tomcat下,根本不支持JSP。那用什么渲染前端?
    答:HTML。
    对就是这么简单,用最原始的HTML就行了,也不需要WEB-INF目录,Spring-Boot有自己的规定,Spring-Boot自动去以下目录:
    "classpath:/META‐INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/" "/"去找。

    2、SpringBoot对静态资源的映射规则

    查看源码我们可以发现,Spring-Boot对静态资源的几种映射规则:
    if (!registry.hasMappingForPattern("/webjars/**")) { customizeResourceHandlerRegistration( registry.addResourceHandler("/webjars/**") .addResourceLocations( "classpath:/META‐INF/resources/webjars/") .setCachePeriod(cachePeriod)); }

    所有 /webjars/** ,都去 classpath:/META-INF/resources/webjars/ 找资源;
    webjars:以jar包的方式引入静态资源;
    可以去WEBJAR的官网找到这些包。
    http://www.webjars.org/
    localhost:8080/webjars/jquery/3.3.1/jquery.js

    3、模板引擎
    既然不支持JSP,不可能只用原始的HTML吧?不会吧。不会吧。
    答:支持Thymeleaf.

    这玩意儿第一次使用还是在我开始学JAVA web的时候,总的来说跟JSP大同小异,但是句法更强大。总比C:那一套强多了!
    Thymeleaf有自己的渲染规则,默认在classpath:/templates/"下对所有html进行渲染。为什么非得是/templates,我也不知道,源码是这么写的。。。

    @ConfigurationProperties(prefix = "spring.thymeleaf") public class ThymeleafProperties { private static final Charset DEFAULT_ENCODING = Charset.forName("UTF‐8"); private static final MimeType DEFAULT_CONTENT_TYPE = MimeType.valueOf("text/html"); public static final String DEFAULT_PREFIX = "classpath:/templates/"; public static final String DEFAULT_SUFFIX = ".html";

    跟之前的JSP句法规则对比:

    4.配置文件
    再来说说配置文件,之前什么SSM,ssh一大堆的配置文件到Spring-Boot都跑哪儿去了?
    (Spring-Boot)答:爷不需要配置文件。
    玩笑归玩笑,哪有不需要程序员去配置的项目。但是细看Spring-Boot底层源码,它已经将很多MVC,视图解析器,包扫描器等都已经自动注入场景了,根本不用去配置。
    但是Spring-BOOT也提供了两个全局默认配置文件。
    SpringBoot使用一个全局的配置文件,配置文件名是固定的;
    •application.properties
    •application.yml

    YAML(YAML Ain't Markup Language)
    YAML A Markup Language:是一个标记语言
    YAML isn't Markup Language:不是一个标记语言;
    标记语言:
    以前的配置文件;大多都使用的是 xxxx.xml文件; YAML:以数据为中心,比json、xml等更适合做配置文件;

    YAML的句法可自行去了解,比起Properties.只能说有好有坏吧,本人比较喜欢用properties,但是面对复杂属性包装的时候比如:MAP,List等用YAML去配置简洁许多

    5.注解
    学新东西,必然得了解下一些注解的作用。
    主程序类,主入口类:

    @SpringBootApplication: Spring Boot应用标注在某个类上说明这个类是SpringBoot的主配置类,SpringBoot 就应该运行这个类的main方法来启动SpringBoot应用;
    @SpringBootConfiguration:Spring Boot的配置类; 标注在某个类上,表示这是一个Spring Boot的配置类;
    @Configuration:配置类上来标注这个注解;
    配置类 ----- 配置文件;配置类也是容器中的一个组件;@Component
    @EnableAutoConfiguration:开启自动配置功能; 以前我们需要配置的东西,Spring Boot帮我们自动配置;
    @EnableAutoConfiguration告诉SpringBoot开启自 动配置功能;这样自动配置才能生效;

    @AutoConfigurationPackage:自动配置包
    @Import(AutoConfigurationPackages.Registrar.class): Spring的底层注解@Import,给容器中导入一个组件;
    导入的组件由 AutoConfigurationPackages.Registrar.class;
    将主配置类(@SpringBootApplication标注的类)的所在包及下面所有子包里面的所有组件扫描到Spring容器;
    @Import(EnableAutoConfigurationImportSelector.class);
    给容器中导入组件? EnableAutoConfigurationImportSelector:导入哪些组件的选择器;
    将所有需要导入的组件以全类名的方式返回;这些组件就会被添加到容器中; 会给容器中导入非常多的自动配置类(xxxAutoConfiguration);就是给容器中导入这个场景需要的所有组件, 并配置好这些组件;

    今日到此结束。。每天记下日志框架和自动配置原理。
    总结:有过SSM,SSH基础的来说学起来相当清爽,Spring-Boot砍掉这很多烦人的配置,规定了自己的渲染原则,总的来说确实比之前的开发效率强多了。

  • 相关阅读:
    协方差矩阵
    VS2010+C#+EmguCV 配置详解
    OpenCv,EmguCv及.net之间的互动(The Interaction of OpenCv, EmguCv AND .net)
    EmguCV学习 与opencv的区别和联系
    redis新手入门,摸不着头脑可以看看<二>
    java常用工具类[待补充]
    redis新手入门,摸不着头脑可以看看<一>
    用java代码发送http请求
    Date和long类型互转
    WEB-INF目录下文件复制的几种方式
  • 原文地址:https://www.cnblogs.com/xhj928675426/p/13039997.html
Copyright © 2020-2023  润新知