SpringBoot Starter
他将常用的依赖分组进行了整合,将其合并到一个依赖中,这样就可以一次性添加到项目的Maven或Gradle构建中。
SpringBoot Starter帮我们做了什么
我们先来回忆一下,在我们没有用SprinBoot的时候 是如何搭建一个Spring Web项目的?
1、pom文件中引入相关jar包,包括spring、springmvc、mysql-connector-java、log4j、等等相关jar ...
2、配置web.xml,Listener配置、Filter配置、Servlet配置、log4j配置、error配置 ...
3、配置数据库连接、配置spring事务
4、配置视图解析器
5、开启注解、自动扫描功能
6、配置完成后部署tomcat、启动调试
......
整个项目搭建好了,但半天甚至一天的时间过去了….
SpringBoot Starter起步依赖
我们来创建一个SpringBoot项目 看它到底做了什么?
在pom.xml文件如引入相关jar包:
spring-boot-starter-web包自动帮我们引入了web模块开发需要的相关jar包,spring-boot-starter-jpa帮我们引入了操作数据库相关的jar包。
从图中可以看到spring-boot-starter-web是把Web相关的jar包整合在一起了。这样就便于引入和管理。因此stater机制帮我们完成了项目起步所需要的的相关jar包。
SpringBoot读取资源文件
我们在开发SpringBoot项目的时候都会在application.properties文件中配置数据库的连接,如下图:
那么SpringBoot是如何读取yml或者properites配置文件中的属性来创建数据源的?
在DataSourceAutoConfiguration类里面,我们注意到使用了EnableConfigurationProperties这个注解。
DataSourceProperties中封装了数据源的各个属性,且使用了注解ConfigurationProperties指定了配置文件的前缀。
这就是为什么在application.properties文件中要配置spring.datasource的前缀属性
@EnableConfigurationProperties与@ConfigurationProperties这两个注解有什么用呢?我们先看一个例子:
application.properties文件中配置如下:
运行main函数:
从运行结果可以看出@ConfigurationProperties与@EnableConfigurationPropertie的作用就是:
@ConfigurationProperties注解的作用是把yml或者properties配置文件转化为对应bean。
@EnableConfigurationProperties注解的作用是使@ConfigurationProperties注解生效。如果只配置@ConfigurationProperties注解,在spring容器中是获取不到yml或者properties配置文件转化的bean的。
通过这种方式,把yml或者properties配置参数转化为了对应的bean
那此时如果我要读取我自己的配置的数据又如何处理呢?我们在项目中新建一个mail.properties配置文件,内容如下:
新建一个MailProperties的类:
写一个测试类执行:
通过@ConfigurationProperties(prefix = "mail")和@PropertySource("classpath:/mail.properties")就可以读取我们自己定义的资源文件了