栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring Boot自定义starter

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring Boot自定义starter

一、创建starter的原理

在我们使用spring Boot的时候,常常要引入很多的starter,这也是spring Boot的一大特色,那么这些stater到底时怎么回事儿呢,今天就一起扒开看看

    引入starter --- xxxAutoConfiguration --- 容器中放入组件 ---- 绑定xxxProperties ---- 配置项

    点进某一个starter我们会发现,这玩意其实是个pom文件,里面指定了很多的依赖;这个东西叫做场景启动器,所谓的场景启动器呢,其实主要的作用就是引入依赖,声明我们这个场景下需要使用哪些jar包,以及里面都会引入一个自动配置包而这个自动配置包就是我们starter的主要逻辑代码所在的部分了所以我们在自定义starter的时候,也按照这个步骤来即可,即:

    yang-hello-spring-boot-starter(启动器)

    yang-hello-spring-boot-starter-autoconfigure(自动配置包)

二、自定义starter步骤

    在创建自定义stater的时候,我们需要两个工程,第一个就是场景启动器,也就是xxx-spring-boot-stater;建个普通maven工程就可以了;在该项目中的pom文件中将自动配置包坐标引入,要是还需要其他的也可以引入

    
    
        4.0.0
    
        com.yang
        yang-spring-boot-stater
        1.0-SNAPSHOT
    
        
            8
            8
        
    
        
            
            
                com.yang
                yang-spring-boot-stater-autoconfigure
                0.0.1-SNAPSHOT
            
        
    
    

     2.之后,我们要准备自动配置包,需要创建一个springBoot项目,然后在pom文件中引入自己需要的依赖,建议引入spring-boot-configuration-processor这样其他项目使用配置的时候就由提示了

    3.创建一个bean即我们看到官方使用的xxxProperties,将其与配置文件绑定

    //指定配置文件的前缀
    @ConfigurationProperties(prefix = "yang.hello")
    @Data
    public class HelloProperties {
        private String prefix;
        private String suffix;
    
    }
    

    4.创建一个service,模拟业务代码逻辑,默认不要将其放入容器中,后面我们使用配置文件同一管理

    public class HelloService {
        //自动注入了实体类helloProperties,所以修改配置类的时候,属性就会跟着修改
        @Autowired
        HelloProperties helloProperties;
        public String hello(String username){
            return helloProperties.getPrefix()+username+helloProperties.getSuffix();
        }
    }
    

       5. 之后还要准备一个配置类,将service注入容器中(因为在第一步的service中我们不会将其                 注入容器);并且使用EnableConfigurationProperties注解,将实体类和配置文件的关联打              开以及注入容器;还可以使用ConditionOnMissingBean等注解,按照具体情况进行条件判断

@EnableConfigurationProperties(HelloProperties.class)
@Configuration
public class YangAutoConfiguration {

    @ConditionalOnMissingBean(HelloService.class)
    @Bean
    public HelloService helloService(){
        HelloService helloService = new HelloService();
        return helloService;
    }
}

6.最后需要在resource目录下建立一个meta-INF目录,创建spring.faction文件,将我们的配置类     XXXAutoConfiguration类的类路径放入其中,这样在springBoot在启动时就可以加载到我们自定     义的配置类了,否则的话加载不到配置类,也就找不到文件了

 7.最后将场景启动器和自动配置包install就可使用;我们可以重新创建一个工程来进行测试,引入场景启动器,直接Autowired引入我们刚刚的HelloService即可,之后在application.yaml中配置好需要配置的文件

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/762879.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号