文章目录
学习SpringBoot框架后写一个总结,这个文档会持续更新的
Spring在官方首页是这么说的:说使用SpringBoot可以构造任何东西,SpringBoot是构造所有基于Spring的应用程序的起点,SpringBoot在于通过最少的配置为你启动程序。
SpringBoot是Spring开源项目的一个子项目,是Spring组件的一站式解决发案,其目的是简化Spring应用的初始搭建和开发过程。
其实就是变得简单,快捷,方便,我们以前自己搭建一个Spring Web项目是不是需要配置web.xml,加载Spring和SpringMvc,在配置数据库连接.配置Spring事务,日志文件,对配置文件的读取,开启注解等等一些东西,在然后启动Tomcat调试,如果还要加一些功能,还需要你自己在去搞一遍,为什么SpringBoot可以很方便的搭建一个Web项目了,不提供 Spring 框架的核心特性以及扩展功能,只用于开发新一代基于Spring框架的应用程序。
所有SpringBoot有以下优点:
1. 开发变得简单
2. 配置变得简单
3. 部署变得简单
4. 监控变得简单
Spring Boot有以下缺点:
1、访问 http://start.spring.io/
2、选择构建工具 Maven Project、Java、Spring Boot 版本 2.1.15、Spring Web依赖以及一些工程基本信息,可参考下图所示:
3、点击 Generate – Ctrl + 下载项目压缩包
4、解压后,使用 IDEA 导入项目


· Group,一般填写公司域名,· Artifact,可以理解为项目的名称了,在点击next进入Dependencles部署,选择SpringBoot的版本,我一般选择的是2.6.3的版本,在点击next
(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220216114401953.png)]
第一部分:项目描述信息
groupId,公司域名;
artifactId,项目名称;
version,项目版本号;
name,项目名称;
description,项目描述
第二部分:依赖配置部分
<parent> 配置 Spring Boot 父级版本
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.6.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies> 配置项目所需要的依赖包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
约定优于配置(Convention Over Configuration),叫作约定编程,是一种设计范式,一般用来减少开发人员做决定的数量。所以.在Spring体系中,Spring Boot jpa就是约定优于配置最佳实现之一,不需要关注表结构,我们约定类名.即是表名,属性名即,是表的字段,在做一些配置,就可以大大简化了我们的工作
Starter可以理解为启动器,它包含了一系列可以集成到应用里面的依赖包
@SprngBoot Application 注解启动类 表示项目的的启动
@SprngBoot Application 注解启动类 标注的是SpringBoot 项目的主配置类,用于启动SpringBoot项目,SpringBoot Application里面还有三个注解分别是@EableAuconfiguration,@SpringBootConfiguration,@ComponetScan
@ComponentScan 注解表示扫描组件,以前在SSM中也使用过组件扫描,启用注解配置。启动类上间接包含该注解,表示会扫描启动类所在包及子包下的注解配置。
@SpringBootConfiguration标注当前类是配置类,并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到spring容器中,并且实例名就是方法名
@EableAuconfiguration 注解 开启自动配置,它下面还有两个重要的注解,@AutoConfigurationPackage,@Import。
@AutoConfigurationPackage 实现了自动将包放入到扫描器中

@Import注解 自动导入第三方依赖
@SpringBootApplication 完成的三件事情
1、标识当前类为主配置类。
2、自动扫描当前主配置类所在的包及其子包下的所有类。并添加一些类配置类纳入Spring容器中。
3、会自动将SpringBoot项目所需要的第三方依赖进行下载。
1、application.properties。
2、application.yml 配置文件。
在默认情况下properties比yml文件的优先级高
相同点:
可以覆盖Spring Boot自动配置的默认值
不同点:
properties的语法是key=value,比较简单。
3 application.yml 配置文件
yml是YAML语言的文件,以数据为中心,比json、xml等更适合做配置文件
yml的语法是由字母值,对象,数组,三种结构组成,并且是以空格的缩进程度来表示层级关系,空格的个数并不重要,只要左边空格对齐则视为同一个层级。注意不能用tab代替空格。且大小写敏感
注意事项:
1、字符串可以不加引号,若加双引号则输出特殊字符,若不加或加单引号则转义特殊字符;
2、数组类型,短横线后面要有空格;对象类型,冒号后面要有空格;
3、YAML是以空格缩进的程度来控制层级关系,但不能用tab键代替空格,大小写敏感;
4、如何让一个程序员崩溃?在yml文件中加几个空格
自定义配置文件通过,@Value获取自定义配置,自定义配置文件,@Configuration配置,导入XML配置,下面我就说下通过@Value和自定义配置文件来定义配置文件
在application.properties自定义配置:
com.test.zhangsan.name=张三
com.test.nishi.name=李四
在HelloController.java中通过 @Value注解获取数据:
@RestController
public class HelloController {
@Value("${com.test.zhangsan.name}")
private String zname;
@Value("${com.test.nishi.name}")
private String lname;
@Autowired
private DemoService demoService;
@RequestMapping("/hello")
public String hello() {
String msg = demoService.sayHello();
msg += " "+zname +" "+lname;
return msg;
}
}
使用@ConfigurationProperties注解,需要在]pom.xml中添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
// 在com.demo.comm包下创建Testinfo.java类,并添加注解,prefix指定获取的配置信息的前缀:
@Cconfiguration
@ConfigurationProperties(prefix = "com.test")
public class Testinfo implements Serializable {
private String zname;
private String lname;
//省略setter/getter
}
// 在启动类上使用@EnableConfigurationProperties(Testinfo.class)
// 修改HelloController.java,注入TestInfo获取数据:
@RestController
public class HelloController {
@Resource
private Testinfo Testinfo;
@Autowired
private DemoService demoService;
@RequestMapping("/hello")
public String hello() {
String msg = demoService.sayHello();
msg += " "+Testinfo.getZname() +" "+Testinfo.getLname();
return msg;
}
}
最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总
Transformers开始在视频识别领域的“猪突猛进”,各种改进和魔改层出不穷。由此作者将开启VideoTransformer系列的讲解,本篇主要介绍了FBAI团队的TimeSformer,这也是第一篇使用纯Transformer结构在视频识别上的文章。如果觉得有用,就请点赞、收藏、关注!paper:https://arxiv.org/abs/2102.05095code(offical):https://github.com/facebookresearch/TimeSformeraccept:ICML2021author:FacebookAI一、前言Transformers(VIT)在图
关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭3年前。Improvethisquestion我正处于学习Ruby的阶段,我想查看一些小型库的源代码以了解它们是如何构建的。我不知道什么是小型图书馆,但希望SO能推荐一些易于理解的图书馆来学习。因此,如果有人知道一两个非常小的库,这是新手Rubyists学习的好例子,请推荐!我想使用Manveru'sInnatelib,因为它试图保持在2000LOC以下,但我还不熟悉其中经常使用的Ruby速记。也许大约100-5
由于匿名block和散列block看起来大致相同。我正在玩它。我做了一些严肃的观察,如下所示:{}.class#=>Hash好的,这很酷。空block被视为Hash。print{}.class#=>NilClassputs{}.class#=>NilClass为什么上面的代码和NilClass一样,下面的代码又显示了Hash?puts({}.class)#Hash#=>nilprint({}.class)#Hash=>nil谁能帮我理解上面发生了什么?我完全不同意@Lindydancer的观点你如何解释下面几行:print{}.class#NilClassprint[].class#A
我想开始使用“Sinatra”框架进行编码,但我找不到该框架的“MVC”模式。是“MVC-Sinatra”模式或框架吗? 最佳答案 您可能想查看Padrino这是一个围绕Sinatra构建的框架,可为您的项目提供更“类似Rails”的感觉,但没有那么多隐藏的魔法。这是使用Sinatra可以做什么的一个很好的例子。虽然如果您需要开始使用这很好,但我个人建议您将它用作学习工具,以对您来说最有意义的方式使用Sinatra构建您自己的应用程序。写一些测试/期望,写一些代码,通过测试-重复:)至于ORM,你还应该结帐Sequel其中(imho
我很难理解Ruby中sender和receiver的实际含义。它们一般是什么意思?到目前为止,我只是将它们理解为方法调用和获取其返回值的调用。但是,我知道我的理解还远远不够。谁能给我一个Ruby中发送者和接收者的具体解释? 最佳答案 面向对象中的一个核心概念是消息传递和早期概念化,这在很大程度上借鉴了计算的Actor模型。艾伦·凯(AlanKay)创造了面向对象一词并发明了最早的OO语言之一SmallTalk,他拥有voicedregretatusingatermwhichputthefocusonobjectsinsteadofo
rails新手。只是想了解\assests目录中的这两个文件。例如,application.js文件有如下行://=requirejquery//=requirejquery_ujs//=require_tree.我理解require_tree。只是将所有JS文件添加到当前目录中。根据上下文,我可以看出requirejquery添加了jQuery库。但是它从哪里得到这些jQuery库呢?我没有在我的Assets文件夹中看到任何jquery.js文件——或者直接在我的整个应用程序中没有看到任何jquery.js文件?同样,我正在按照一些说明安装TwitterBootstrap(http:
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我一直在Rails上做两个项目,它们运行良好,但在这个过程中重新发明了轮子,自来水(和热水)和止痛药,正如我随后了解到的那样,这些已经存在于框架中。那么基本上,正确了解框架中所有智能部分的最佳方法是什么,这将节省时间而不是自己构建已经实现的功能?从第1页开始阅读文档?是否有公开所有内容的特定示例应用程序?一个特定的开源项目?所有的rails交通?还是完全
关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭4年前。Improvethisquestion我希望能够将模板化的YARD文档样式注释插入到我现有的Rails遗留应用程序中。目前它的评论很少。我想要具有指定参数的类header和方法header(通过从我假定的方法签名中提取)和返回值的占位符。在PHP代码中,我有一些工具可以检查代码并在适当的位置创建插入到代码中的文档header注释。在带有Ducktyping等的Ruby中,我确信诸如@params等类型之类
我尝试用Ruby设计一个基于Web的应用程序。我开发了一个简单的核心应用程序,在没有框架和数据库的情况下在六边形架构中实现DCI范例。核心六边形中有小六边形和网络,数据库,日志等适配器。每个六边形都在没有数据库和框架的情况下自行运行。在这种方法中,我如何提供与数据库模型和实体类的关系作为独立于数据库的关系。我想在将来将框架从Rails更改为Sinatra或数据库。事实上,我如何在这个核心Hexagon中实现完全隔离的rails和mongodb的数据库适配器或框架适配器。有什么想法吗? 最佳答案 ROM呢?(Ruby对象映射器)。还有