• 自定义spring-boot-starter


    自定义加载spring-boot-starter

    第一步

    • 创建一个Maven空项目 luban-spring-boot-starter
      在这里插入图片描述

    • 引入基础依赖

     <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starterartifactId>
            <version>2.5.0version>
        dependency>
        <dependency>
            <groupId>org.projectlombokgroupId>
            <artifactId>lombokartifactId>
            <version>1.18.28version>
        dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    第二步

    • 创建配置类UserAutoConfiguration
    @Configuration
    @ConditionalOnProperty(prefix = "user", value = "enable",havingValue = "true",matchIfMissing = false)
    public class UserAutoConfiguration {
        @Bean(name = "user")
        @ConditionalOnMissingBean(value =  User.class)
        public User getUser() {
            User user = new User();
            user.setName("张三");
            user.setAge(18);
            user.setGender("男");
            return user;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    其中该配置类的加载条件为配置文件user.enable=true ,不存在或者不为true,则不加载。

    getUser()方法生效的条件为当前环境变量中不存在名为user的Bean对象,目的让使用者自定义的user Bean对象生效

    • User类
    @Data
    public class User {
        private String name;
        private Integer age;
        private String gender;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    第三步

    • resources目录下创建META-INF\spring.factories文件
    • spring.factories中写入需要spring-boot自动加载的类,通常名为xxxAutoConfiguration
    • 打包项目----》发布到Maven私服/安装到本地Maven

    固定格式为Key-Value形式
    EnableAutoConfiguration的全路径名称 = 自定义配置类的全路径名称 \ 为换行符

    org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
    com.cxl.luban.UserAutoConfiguration
    
    • 1
    • 2

    第四步

    • 使用者引入依赖
     		<dependency>
                <groupId>com.cxlgroupId>
                <artifactId>luban-spring-boot-starterartifactId>
                <version>2.5.0version>
            dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 配置文件中配置:
    user: 
    	enable: true
    
    • 1
    • 2
    • 使用user的Bean对象
    @Autowired
    private User user;
    
     public void getName(){
     	user.getName();
     }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • 相关阅读:
    微信小程序开发-----发起网络请求携带后端token
    【每日一题Day320】LC2651计算列车到站时间 | 数学
    【云原生之kubernetes实战】kubernetes集群下的存储持久化
    SpringBoot + xxl-job 多数据源异构数据增量同步
    mysql约束
    第3阶段-运维线上实战-3.2企业级nginx使用
    Linux 常用基础命令(入门版)
    【区块链技术与应用】(三)
    微服务之网关路由
    java-net-php-python-s2s酒店管理系统计算机毕业设计程序
  • 原文地址:https://blog.csdn.net/lx5210521/article/details/133763211