spring boot为了简化spring开发的;本质还是一个spring;翻译过来spring脚手架。
先安装一个插件;此插件也在idea在2022版后就收费。专业版则不需要安装插件
安装成功后名字就变了
创建流程:
1:
2:
注意修改:
3:
添加项目当前依赖项;勾上就行了。要添加什么就搜索什么;比如mysql。这些mysql、依赖版本号不需要你去关注;你只需要打勾就好了;自动帮你项目匹配对应版本。上图spring Configuration Processor依赖可不能选;因为我们对配置文件进行操作;它就会运行失败
4:创建出来发现没有maven选项;
如果出现问题;极有可能是国内源没配置好。
最后运行出现控制台打印启动时间;运行没中断才是大功告成
用阿里云的源创建;用spring.io源可能网络错误;多试几次如果还错误就可以使用这个了。注意得加https不然idea自动给你加的是http;就报错了。
网页版创建;就输入这两个网址就可以分别创建。注意:阿里源的创建的版本是比较老的
在这里插入图片描述
网页版的创建就不需要依赖spring boot Helper插件;但是这个插件还有个好处就是在后面写配置文件时会有代码提示的效果。网页版创建会给你生成一个压缩包;把这个包解压到入idea效果就会跟我们在idea创建的一样。把这个包保存一下;以后你网页版或者idea的方式没法创建就用这个包。
注意:我们使用maven打包;打的包会放在target文件下
创建一个类;一定是和启动类的目录一样;或者是它的子目录。这就是约定大于配置。
这个类得存到spring才能发挥它相应的作用;spring web是要依赖spring容器;Spring Web模块提供了用于开发Web应用程序的功能和组件,包括处理HTTP请求、路由映射、请求参数解析、视图渲染等。这些功能需要在Spring容器的上下文中进行配置和管理。
要实现上述我们的效果;必须添加spring web的依赖;
如果在创建时候忘记添加依赖又如何解决:安装插件
就能回到熟悉的界面:
对比之spring boot和spring的配置文件;为什么没配置;注解还能识别还能加载进去。这里spring 也不会全部的项目去扫描有没有加类注解。原因是你只能在这个启动类的目录下添加;或者它的子类。(这就是约定大于配置;想要高效且好用;你得按别人规定的用法)
(注意事项;在学习的过程遇到一个问题;当在配置文件设置端口是6666昨天能正确运行;而今天却不行。坚信代码写的非常到位;而把端口改成7778;8086却又可以运行;所以这个端口注意不能太小)
配置文件:我们上述创建spring boot项目是没涉及此文件;配置文件可以继续数据库连接信息设置(用户名、密码);项目的启动端口;三方的密钥信息放在这配置文件(这些信息写在程序里是不安全的;代码可能被别人下载;打包后编译成class文件;不能修改的。)用于日志的一个配置。
配置文件的格式:
1:properties;使用键值对的方式(key=value);#用来添加注释
2:yml(yaml简写):key: value 像json格式
两个同时存在问题:
如果两个人都存在;它们配置的端口不一样;那听谁的。优先级;以properties为主。但是你为什么要搞两个配置文件呢;所以说这也是一个不存在的问题。
字符集问题:
注意:这个配置文件是不支持中文的;注释也不支持;你写的第一次可能显示没问题;然后你下一次打开加载这个项目就乱码了。有可能重启idea没乱;重启电脑也会乱码;因为有缓存。我们得把所有能修改成utf8的都修改成utf8.直到右下角这里出现utf8。
怎么设置:设置完还得把原来的配置文件删掉;再创建一份一模一样的就能生效
在这个地方还要再重复操作设置一遍;这样才能一劳永逸。
两种格式示例:properties用.表示层次;而yml使用缩进的方式;yml相对是不好把握
注意
1:使用的是这个Value
2:如果没加${ };那么结果将是:将字符串赋值给下面的
3:如果你没有server.port这个配置项的key;这样子写就报错了;项目都启动不起来。
优点:格式简单;不容易出错;优先级比较高。缺点:如果我同一个包下有100个这样子要写配置项;那么前面重复的包名我得写100遍。
yml配置成功;颜色会这样子深一点(yml能支持其它语言;而properties只能是java)换行加缩进表示一个一级目录。冒号后面要空格
对于刚才的问题;只需要写一遍相同的层级
yml还可以支持更多类型:
读取的方式还是上面的那种;当什么都不加/单引号;所见即所得;加的是双引号\n就是换行
2:配置对象
两种写法
获取属性:
想要把这个对象读出来得用另一个注解:@ConfigurationProperties;对象key值得要和这里对应;属性的key值也要对应。
在测试类Test_yml
还能在yml写数组;但是谁又会在配置文件写集合;写数组;更多系统配置项
总结:properties 和yml
1:语法上区别;properties 是以 key=value 的形式配置的键值类型的配置⽂件,⽽ yml 使⽤的是类似 json 格式的。key 冒号 空格 value
2:语言支持上;properties只是java;yml则java、Go、Python等
3:数据类型:Properties文件中的所有值都被视为字符串,没有直接支持其他数据类型。YAML文件支持多种数据类型,包括字符串、整数、浮点数、布尔值、列表和映射等。
4:数据冗余的问题;properties 当多个同级目录下的都要配置;所有的包目录都要重复写。而yml能解决这种问题
一般项目至少有三个配置文件;开发、测试、生产环境。主文件存的是公共的配置项;有差异的就放在副的。它们的命名规则;主配置文件一定是:application.yml(.properties) 副配置文件:application-xxx .yml(.properties)
spring.profiles.active=dev指定了当前应用程序的活动环境为"dev"(开发环境)。应用程序将加载与"dev"环境相关的配置文件。在主配置文件加上这个意味;也使用副的配置文件dev