02_自定义Springboot starter

 

  • 创建springboot starter 
  1. 创建一个demo starter 
  2.  创建配置类

    @Configuration
    @EnableConfigurationProperties(EmailProperties.class)
    @ConditionalOnBean(EmailEnable.class)
    public class EmailAutoConfiguration {
    
        static {
            System.out.println("EmailAutoConfiguration init...");
        }
    
        @Bean
        public EmailServiceImpl emailServiceImpl() {
            return new EmailServiceImpl();
        }
    }
    
    
    // =============================================
    public class EmailEnable {
    }
    
    // =============================================
    
    @ConfigurationProperties(prefix = "email.config")
    public class EmailProperties {
    }
    // =============================================
    
    @Documented
    @Inherited
    @Retention(RetentionPolicy.RUNTIME)
    @Target({ElementType.TYPE})
    @Import(EmailEnable.class)
    public @interface EnableAutoEmail {
    }

     

  3. 创建具体业务类型
    public interface EmailService {
    
        void sendEmail() throws EmailServiceException;
    
    }
    
    //========================================
    
    public class EmailServiceImpl implements EmailService {
        @Override
        public void sendEmail() throws EmailServiceException {
           
        }
    }
  4. 增加配置文件 resource目录下创建一个META-INF文件夹,这里需要注意的是EmailAutoConfiguration需要放到一个根目录下。
    org.springframework.boot.autoconfigure.EnableAutoConfiguration=XXX.EmailAutoConfiguration

     

  5. 将项目install到本地的maven库中,打包时需要注意一下,SpringBoot项目打包的JAR是可执行JAR,它的类放在BOOT-INF目录下,如果直接作为其他项目的依赖,会找不到类。可以通过修改pom文件来解决,代码如下:
    <plugin>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-maven-plugin</artifactId>
         <configuration>
             <classifier>exec</classifier>
         </configuration>
    </plugin>

    如果需要上传私有maven中,需要配置以下代码:

        <distributionManagement>
            <repository>
                <id>XXX</id>
                <name>XXX</name>
                <url>XXX</url>
                <layout>default</layout>
            </repository>
            <snapshotRepository>
                <id>XXX</id>
                <name>XXX</name>
                <url>XXX</url>
            </snapshotRepository>
        </distributionManagement>

     

  6. 使用springboot start,引入包
            <dependency>
                <groupId>com.example</groupId>
                <artifactId>demo2</artifactId>
                <version>0.0.1-SNAPSHOT</version>
            </dependency>

     

  7. 开启starter,需要在ApsUiApplicationServer中增加@EnableAutoEmail 注解
  8. 测试
    public class MailTest extends ApplicationTest {
        @Autowired
        private EmailService emailService;
        @Test
        public void sendEmail2() throws EmailServiceException {
            emailService.sendEmail();
        }
    }

     

  9. 参考资料:

    SpringBoot-自定义Start
    https://blog.csdn.net/cstp321/article/details/124755699
    https://www.jianshu.com/p/15433fd85108
    https://blog.csdn.net/Jieur/article/details/122438549?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170018651416800213015032%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=170018651416800213015032&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-122438549-null-null.142^v96^pc_search_result_base8&utm_term=springboot%20starter%20&spm=1018.2226.3001.4187

     

    java: 错误: 无效的源发行版:17
    https://blog.csdn.net/qq_37293274/article/details/133906505
    https://www.jb51.net/program/298274cmd.htm
    https://blog.csdn.net/wq106532533/article/details/130610260
    https://www.jb51.net/program/298274cmd.htm

    Maven install 报Exception AssertionError解决办法
    https://blog.csdn.net/xiaolei_126/article/details/128086712


    spring-boot项目使用maven打包时出现BOOT-INF文件夹的问题

    https://blog.csdn.net/wufaqidong1/article/details/133588084

  10.  

     

 

posted @ 2023-11-17 14:25  ~不想起名~  阅读(26)  评论(0)    收藏  举报