boot在学英语的时候学到的意思是靴子,五年级搞坏电脑的时候屏幕提示的是BootLoader is Missing,知道了boot有【计算机概念】启动的意思。
那么Spring Boot的特性也自然和初始化有关了——起步依赖和自动配置
依赖和配置是Spring的部分,而boot的特性在于黑体部分。
起步依赖(starter dependency)的目的就是解决上一节中提到的依赖管理难题:针对一个功能,需要引入哪些依赖、它们的版本又是什么、互相之间是否存在冲突、它们的间接依赖项之间是否存在冲突……现在我们可以把这些麻烦都交给 Spring Boot 的起步依赖来解决。
在没有使用 Spring Boot 时,对于一个 Web 项目,我们需要配置 DispatcherServlet 来处理请求,需要配置 Jackson JSON 来处理 JSON 的序列化,需要配置 Log4j2 或者 Logback 来打印日志……而在第一节的 HelloWorld 例子中,我们并没有配置这些东西,Spring Boot 自己完成了所有的配置,我们只需要编写 REST 接口的逻辑就好了。
这就是 Spring Boot 的自动配置,它能根据 CLASSPATH 中存在的类判断出引入了哪些依赖,并为这些依赖提供常规的默认配置,以此来消除模板化的配置。与此同时, Spring Boot 仍然给我们留下了很大的自由度,可以对配置进行各种定制。
第一章 趁热打铁!
因为被这个折磨了好一会所以对这些属性都有概念,哪怕不知道artifactId是什么也知道放个库名进去。而且关键是,这个库也不需要你记得太多名字↓
tomcat是什么,好像听过
嗯知道你有嵌入式服务了,要用到嵌入式的时候我来找你们tomcat和jetty
这还顺便把最后一个特性带过了,就是自带嵌入式服务。
第二章 开始学习项目啦
⚠ 本人没有java任何开发经验,只在公司看了一会语法
1 默写
首先我删了昨天项目然后重新创建了一次
然后凭感觉敲一下代码
完全一样,但是为什么还会有红色下划线呢?
是因为我python用习惯了,它对字符串字符都是可以用' '和" ",java还是有点区分的。
2 看看怎么配置
接下来看教材
那这个项目该编写什么配置?(伸手)
教材给了好多代码……脑袋爆了
我的眼睛已经无法承受这么大的信息量了,只得拿出传统武器——
纸笔。
3 小插曲(package语法学习)
橙色字让我去看了下项目源码
鼠标移动到书签栏——
我一下子就知道我是对package概念不熟悉了,百度恶补一下:
okok想起来了
那么首先总的架构是不变的,src外面依旧有个pom.xml,不同的是里面的结构,
test/java/是测试用的,在main里创建项目以后这里自动创建,所以我其实应该去main/java/,然后包名在里面写就好了,learning.spring.config,然后在里面编写类(也就是.java文件,编译以后则是.class)
至于为什么说这么基础的问题?
当然是我java学的时候偷了懒想着实际开发的时候再学呀!
然而,橙色部分还是没解决,我该去哪找配置文件???
有点疑惑,为什么config里的java引用的文件会在主目录这儿……
果然,编译器会报错,需要导包才行,但是怕出事我还是暂时放主目录吧
顺带发现:
test和main的结构是不一样的,只有一部分拿来测试的代码,配置文件不会丢过来
4 开始模仿代码
没有直接照抄它的名字,防止我无脑粘贴代码,嘿嘿,给自己上强度
(然后又跟第一节一样报错连篇是吧)
跟着敲会想很多很多的事情——
Configuration和Properties都有配置的意思,让我猜测一下各自的习惯用途:
Configuration是单纯的“设置,调节属性的”意思
Properties是指代配置文件
这个图片概括它们的关系更好,所以都是配置,但是一起出现是没问题的
property是Properties的单数形式。
getter和setter可以直接生成
刚才的紫色问题得到了解答,编译器会报错,但是配置这个第二步就能找到了……
dbq我真的觉得前面的配置的理论太枯燥了所以都没看
【真正开始照着敲代码才发现该记录的太多太碎了,所以只放模仿的结果了】
使用maven的debug/test后,喜提报错[0.5 >> 9.9]
这个确实可以跳过测试,然而我们是来找问题的,按着他说的路径去找日志,发现这个问题:
No qualifying bean of type 'org.poppingparty.milktea.MilkTeaProperties' available
at org.poppingparty.config.ShopConfigurationEnableTest.testPropertiesBeanAvailable(ShopConfigurationEnableTest.java:23) at org.poppingparty.config.ShopConfigurationEnableTest.testPropertyValues(ShopConfigurationEnableTest.java:29)
尝试参考No qualifying bean of type问题解决_no qualifying bean of type 'me.chanjar.weixin.mp.a-CSDN博客
不行!所以我被迫学会了点别的
ApplicationContext的getBean_applicationcontext.getbean-CSDN博客
applicationContext 是非null,但依然报错,说明24行的有问题,为什么呢?
……
能力不足,再见,排查三小时了
教材里也没有给这个啊……
无语了
然后可以跑通了
下线
最失败的一集