本次主要实践的内容是springboot配置相关的知识,简要介绍springboot中一些常用的配置信息,包括自定义banner、自动配置注解@Configuration、属性注入注解@ConfigurationProperties、yaml配置文件、多环境profile配置方式
首先创建一个module,名称为config:
这里选择使用spirng initializer创建spirngboot项目:
此处选择版本为2.1.7,勾选Spring Web Starter,此starter提供了web功能,包括内置的tomcat容器:
确认信息,点击finish:
创建好之后需要注意右下角,选择红框的选项,此选项可以显示一个dashboard,使得运行多个spirngboot项目更加方便:
创建好之后项目结构应该是下面这样的,最底下那个就是刚才选择红框选项出现的dashbroad,它会列出所有该项目下springboot的入口类,方便启动:
springboot默认提供了一个parent starter,其中定义了许多默认配置,包括版本号、自动配置等信息,你也可以选择自定义自己的parent starter:
入口类即包含main方法的类上被标记了@SpringBootApplication注解,这是spirngboot中的核心注解,springboot的一切都是从这里开始的,其中该注解是一个组合注解,它是由左边红框内的三个注解组成的:
第一个注解其实代表的就是@Configuration,即springboot中配置类,springboot使用标有该注解的类代替了xml文件,第二个注解表示开启自动配置功能,第三个注解是组件扫描注解:
为了展示spirngboot中的配置,首先创建一个普通的java类,idea默认会将.前面的当成包创建出来:
接着创建一个名称为Dog的普通类:
在创建好的BeansConf类上标注@Configuration,表明该类是一个配置类,接着创建一个带有@Bean标识的dog方法,@Bean注解表示该对象是需要给spring容器管理的bean对象,名称默认为方法名,也可以在@Bean注解中指定,springboot在初始化时会默认扫描所有配置类中的@Bean注解:
接着启动springboot,即运行main方法,控制台会输出如下信息,此图标即称为banner:
springboot提供了自定义banner的功能,其中banner可以是txt、jpg、gif三种格式,可以在配置文件中指定它的位置、名称等属性,此处使用最简单的方式修改banner,首先在类路径下创建banner.txt文件,该文件内编写任何你希望输出的内容:
在此启动springboot后会发现banner已经被修改了:
springboot支持properties和yaml两种方式的配置文件,同时它提供了非常多的属性可供设置:
springboot提供的web starter中默认使用的是tomcat作为内置的服务器,你也可以使用你想使用的其他服务器,首先你需要排除默认的tomcat,然后添加你喜欢的服务器的依赖,如下是将tomcat替换为了jetty:
重新启动后如果出现红框内以Jetty开头的信息时表示替换成功:
此处使用yaml文件将服务端口改为8083,启动后可以看到端口已经被改变:
为了测试@ConfigurationProperties的功能,首先在Dog文件汇总添加name和age属性,并生成相应的get和set方法:
在yaml文件中配置如下信息:
红框中的值代表了yaml文件中开头的dog,这样就会把yaml文件中dog下的name和age的值注入到Dog类中的属性上了:
编写一个Controller,并给它注入Dog对象,编写一个方法返回dog信息:
在dashboard中启动springboot:
在浏览器中访问controller中方法的路径,可以发现该对象已经被赋值了,该值来源于yaml文件,@ConfigurationProperties注解将yaml中定义的值注入到了Dog对象中:
接下来实验多环境下的profile,它的写格式如下,其中红框内的内容区分多部分的profile,不可省略,profiles定义了该部分的名称,后面跟的是该部分中使用的配置,通过active选择激活哪个部分的profile:
上图中选择激活dev下的profile,则端口变成了dev中配置的8084,如果active改为prod,则端口会变为8085:
选择激活dev下的profile,则端口变成了dev中配置的8084,如果active改为prod,则端口会变为8085:
[外链图片转存中…(img-kuDgIW16-1567675332371)]
springboot和spring最大的区别就是提供了自动配置,极大的简化了spring相关的配置,上面介绍的功能只是一些常用的,springboot中自带的配置比这些多很多,只有掌握了这些配置才能更好的使用springboot