简单介绍一下springboot,springboot是用来做什么的
00-1010(一)概述(二)看一个例子(三)实现信息广播启动器(四)调用此启动器(五)总结
目录
跳靴因其自动装配能力而被广泛使用。我们写代码的时候肯定遇到过很多spring-boot-starter命名依赖,比如spring-boot-starter-web。将这些starter依赖项引入pom文件后,SpringBoot可以扫描这些类,并通过自动组装技术将它们加载到Bean容器中。
除了SpringBoot的官方首发,我们也可以开发自己的首发。为了区别于官方启动器,建议自定义启动器命名为xxxx-spring-boot-starter,如mybatis-spring-boot-starter。
本文将介绍如何自己实现一个启动器。
00-1010在写自己的入门之前,有必要看看别人是怎么写的。以类RedisAutoConfiguration为例。
启动时,SpringBoot会通过自动组装扫描项目mata-INF/spring.factors文件,该文件定义了所有需要自动组装的类。Redis的自动组装类是RedisAutoConfiguration,如下所示。
进入RedisAutoConfiguration后,先看看最重要的注释。@配置就不用提了。@ConditionalOnClass表示只有当该注释后面的类存在时,才会加载Bean。下图很明显RedisOperations不存在,所以Redis不会自动组装。
@EnableConfigurationproperties用于自动加载配置类的信息。配置类和我们平时写的基本一样,通过ConfigurationProperties读取Properties或者yaml中的配置信息。
在类RedisAutoConfiguration中定义了两个Bean,我们都应该熟悉它们。@ConditionalOnMissingBean的意思是这个Bean只有在Spring容器中不存在的时候才会被加载,所以如果我们在代码中自己定义redisTemplate,那么注入到Bean容器中的就是我们自己编写的Bean。
看到这里基本知道了一个启动器的实现方案,我们来写一个简单的启动器。
00-1010这个Starter要做的事情其实很简单,就是输出配置文件中配置的信息。
首先,创建一个新的Maven项目和项目中的两个新模块。我将这两个项目分别命名为report-spring-boot-starter和example-spring-boot。
首先介绍一下report-spring-boot-starter,这是一个启动器,主要实现输出一些内容的功能。我们完全可以按照RedisAutoConfiguration来写。首先,创建一个新的自动装配类:ReportAutoConfiguration。
@ Configuration @ conditional class(report operation . class)@ EnableConfigurationProperties(report properties . class)public class report auto Configuration { @ Bean public report operation report operation(report properties report properties){ report operation report operation=new report operation(report properties . getmsg());返回reportOperation}}仅当ReportOperation存在时才会加载配置,并且配置文件ReportProperties将被激活。
public class report operation { private String msg;public report operation(String msg){ this . msg=msg;}公共字符串getMsg(){ return msg;}
public void setMsg(String msg) { this.msg = msg; } public String report(){ return msg; }}ReportProperties如下:
@ConfigurationProperties(prefix = "report")public class ReportProperties { private String msg; public void setMsg(String msg) { this.msg = msg; } public String getMsg() { return msg; }}
接下来是实现自动注入的关键,前面已经说到了,SpringBoot会去扫描依赖Jar包中META-INF/spring.factories中的内容,因此在resources目录下新建META-INF/spring.factories,写下配置信息:
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.javayz.starter.ReportAutoConfiguration
这样一个简单的Starter就完成了。
(四)调用这个Starter
接下来在example-spring-boot这个module中调用上面的starter,首先第一步引入相关依赖,这里只需要引入springboot相关依赖和自己写的starter依赖即可:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-autoconfigure</artifactId></dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency><dependency> <groupId>org.example</groupId> <artifactId>report-spring-boot-starter</artifactId> <version>1.0-SNAPSHOT</version> <scope>compile</scope></dependency>
接着写一个测试的controller测试自动注入的效果:
@RestControllerpublic class TestController { @Autowired private ReportOperation reportOperation; @GetMapping("test") public String test(){ System.out.println(reportOperation.getMsg()); return reportOperation.getMsg(); }}
在配置文件中增加一条配置:
report.msg = hello
运行项目调用接口,可以发现ReportOperation这个Bean已经被自动注入了。
(五)总结
本文结合redis自动注入的例子,写了一个属于自己的Starter,希望对大家有所帮助。我是鱼仔,我们下期再见!
到此这篇关于利用SpringBoot写一个属于自己的Starter的文章就介绍到这了,更多相关SpringBoot写一个Starter内容请搜索盛行IT以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。