300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > SpringBoot四大核心之starter——自定义starter

SpringBoot四大核心之starter——自定义starter

时间:2023-08-09 00:25:51

相关推荐

SpringBoot四大核心之starter——自定义starter

四大核心

1、starter:jar包的引入,解决jar版本冲突问题

2、自动装配:简单配置甚至零配置即可运行项目

3、actuator:springboot程序监控器

4、CLI:命令行

starter

starter的命名有一种习惯,官方的starter一般都是spring-boot-starter-xxx,而我们自定义的starter一般都是xxx-spring-boot-starter。

首先我们需要明白一件事,就是我们自定义的bean是可以自动装配过来的,而我们第三方自定义的starter是如何被componentScan扫描到的呢,其实有一个约定,就是在resources下创建一个META-INF目录,在该目录下创建一个spring.factories文件,然后在该文件下说明哪些类下是你的bean。

org.springframework.boot.autoconfigure.EnableAutoConfiguration

创建一个普通的springboot项目

我这里命名为hzy-spring-boot-starter,当你创建好之后,可以把启动类删了,因为我做依赖一般都是被其他项目引入的,所以留着也没用,然后需要引入两个依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency>

引入之后,我们可以定义一个service,里面可以写我们的业务代码。

public class HzyService {public String getHelloWorld() {return "hello world";}}

然后就是定义一个配置类,这里命名为AutoConfig,用来将我们的service注入到IoC容器中

@Configurationpublic class AutoConfig {@Beanpublic HzyService hzyService() {return new HzyService();}}

然后就是最重要的一步了,让我们的配置类能被扫描到,在Spring中,约定大于配置,约定了我们在resources下创建一个META-INF的目录,里面写一个spring.factories文件,配置上路径即可。

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.hzy.AutoConfig

最后的最后就是将这个项目打包到我们本地的maven仓库了,执行下面的命令即可。

mvn clean install -Dmaven.test.skip=true

最后,像引入其他依赖一样,引入该依赖就可以了,里面那个HzyService,可以直接通过自动装配创建对象。

@Autowiredprivate HzyService hzyService;

至此,自定starter就结束了,是不是很简单,如果世界这么简单就好了。。。

配置文件

我们在写一些官方的配置的时候,可能会发现,当我们写了一个前缀,后面会有一些提示,重要的是,我们的配置能够生效,这是怎么做到的呢?

其实是通过一个@ConfigurationProperties注解实现的,通过配置前缀,它可以进行扫描到你的配置。

@ConfigurationProperties(prefix = "hzy")public class HzyProperties {private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}}

这样一个简单的配置,我们就可以在引入该jar的项目中进行配置了,如果不配置的话,name属性为null。

此时我们修改我们的Service类,把该配置引进来。

public class HzyService {@Autowiredprivate HzyProperties hzyProperties;public String getHelloWorld() {return "hello world: " + hzyProperties.getName();}}

另外,我们还需要修改我们的自动装配类,通过@Import注解,将该类提前注入到IoC容器。

@Configuration@Import(HzyProperties.class)public class AutoConfig {@Beanpublic HzyService hzyService() {return new HzyService();}}

当我们引入了该依赖之后,会有提示了,配置一下name,再次运行

可以看到,配置已生效,好了,今天的分享就到这里了。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。