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砍掉这很多烦人的配置,规定了自己的渲染原则,总的来说确实比之前的开发效率强多了。

Spring-boot01的更多相关文章
- Spring Boot--01错误处理
package com.smartmap.sample.ch1.controller.view; import java.io.IOException; import java.util.Collec ...
- 基于spring注解AOP的异常处理
一.前言 项目刚刚开发的时候,并没有做好充足的准备.开发到一定程度的时候才会想到还有一些问题没有解决.就比如今天我要说的一个问题:异常的处理.写程序的时候一般都会通过try...catch...fin ...
- 玩转spring boot——快速开始
开发环境: IED环境:Eclipse JDK版本:1.8 maven版本:3.3.9 一.创建一个spring boot的mcv web应用程序 打开Eclipse,新建Maven项目 选择quic ...
- Spring基于AOP的事务管理
Spring基于AOP的事务管理 事务 事务是一系列动作,这一系列动作综合在一起组成一个完整的工作单元,如果有任何一个动作执行失败,那么事务 ...
- [Spring]IoC容器之进击的注解
先啰嗦两句: 第一次在博客园使用markdown编辑,感觉渲染样式差强人意,还是github的样式比较顺眼. 概述 Spring2.5 引入了注解. 于是,一个问题产生了:使用注解方式注入 JavaB ...
- 学习AOP之透过Spring的Ioc理解Advisor
花了几天时间来学习Spring,突然明白一个问题,就是看书不能让人理解Spring,一方面要结合使用场景,另一方面要阅读源代码,这种方式理解起来事半功倍.那看书有什么用呢?主要还是扩展视野,毕竟书是别 ...
- 学习AOP之深入一点Spring Aop
上一篇<学习AOP之认识一下SpringAOP>中大体的了解了代理.动态代理及SpringAop的知识.因为写的篇幅长了点所以还是再写一篇吧.接下来开始深入一点Spring aop的一些实 ...
- 学习AOP之认识一下Spring AOP
心碎之事 要说知道AOP这个词倒是很久很久以前了,但是直到今天我也不敢说非常的理解它,其中的各种概念即抽象又太拗口. 在几次面试中都被问及AOP,但是真的没有答上来,或者都在面上,这给面试官的感觉就是 ...
- 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术框架由struts2迁移到springMVC,我突然有了一个新的疑 ...
- Spring之旅(2)
Spring简化Java的下一个理念:基于切面的声明式编程 3.应用切面 依赖注入的目的是让相互协作的组件保持松散耦合:而AOP编程允许你把遍布应用各处的功能分离出来形成可重用的组件. AOP面向切面 ...
随机推荐
- Spring杂谈 | 你真的了解泛型吗?从java的Type到Spring的ResolvableType
关于泛型的基本知识在本文中不会过多提及,本文主要解决的是如何处理泛型,以及java中Type接口下对泛型的一套处理机制,进而分析Spring中的ResolvableType. 文章目录 Type 简介 ...
- 一文教你快速学会在matlab的simulink中调用C语言进行仿真
本文介绍如何在matlab的simulink中嵌入C语言进行多输入多输出的仿真:matlab版本位2015b: 创作不易,如果本文帮到了您: 如果本文帮到了您,请帮忙点个赞
- 74LS 系列 名称解释
摘自:http://blog.sina.com.cn/s/blog_502ffce50100j9db.html -------------------------------------------- ...
- Java TCP小结
服务端: 客户端: ServerSock ...
- case when的使用-解决分表查数据给某一个字段
一个表中存的是目前有效的菜单,另外一个表中存的是有效菜单的历史更改数据 需要查询历史数据的时候,带上访问的历史数据菜单名称 SELECT msg.msg_id, msg.from_user_name, ...
- html5 canvas 绘制上下浮动的字体
绘制上下浮动的字体主要思想为先绘制好需要的字体,每隔一定的时间将画布清空,然后再将字体位置改变再绘制上去 如此循环即可. (function(window) { var flowLogo = func ...
- springmvc 校验--JSR
1.使用JSR规范是简单使用的,如果使用hibernate校验则需要在工程中添加hibernate-validate.jar,以及其他依赖的jar包. 2,在mvc配置文件中使用<mvc:ann ...
- linux下安装gmp遇到 configure:error:no usable m4 in$path or /user/5bin解决方案
安装过程中遇到如下报错: 上面的报错是因为你没有安装m4,安装m4就可以了:以下两种命令人选其一: #yum install m4 或 #apt-get install m4 ps:如果遇到权限问题就 ...
- Django之forms.ModelForm
通常在Django项目中,我们编写的大部分都是与Django 的模型紧密映射的表单. 举个例子,你也许会有个Book 模型,并且你还想创建一个form表单用来添加和编辑书籍信息到这个模型中. 在这种情 ...
- ubuntu下安装perl GD模块
依次执行: sudo apt-get install libgd2-xpm-dev sudo perl -MCPAN -e shell install Bundle::CPAN install GD: ...