springboot自定义starter(protobuf-spring-boot-starter)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013219624/article/details/84939302

0.简介(因为没有想到合适的事例 所以就封一层protobuf)

官方命名:spring-boot-starter-{name} 比如spring-boot-starter-web
非官方命名:{name}-spring-boot-starter 比如mybatis-spring-boot-starter

1.maven依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-autoconfigure</artifactId>
    <version>2.0.0.RELEASE</version>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <version>2.0.0.RELEASE</version>
</dependency>

<dependency>
  <groupId>com.google.protobuf</groupId>
  <artifactId>protobuf-java</artifactId>
  <version>3.6.0</version>
</dependency>

<dependency>
  <groupId>com.googlecode.protobuf-java-format</groupId>
  <artifactId>protobuf-java-format</artifactId>
  <version>1.2</version>
</dependency>

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>5.0.9.RELEASE</version>
</dependency>

2.自定义ProtobufAutoConfiguration

@Configuration
@ConditionalOnProperty(prefix = "spring.protobuf", value = "enabled", matchIfMissing = false)
public class ProtobufAutoConfiguration {

    @Bean
    public ProtobufHttpMessageConverter protobufHttpMessageConverter() {
        return new ProtobufHttpMessageConverter();
    }

    @Bean
    public RestTemplate restTemplate(ProtobufHttpMessageConverter protobufHttpMessageConverter) {
        List<HttpMessageConverter<?>> messageConverters = new ArrayList<HttpMessageConverter<?>>();
        messageConverters.add(protobufHttpMessageConverter);
        return new RestTemplate(messageConverters);
    }
}

注释:spring.protobuf.enabled=true才自动装配ProtobufAutoConfiguration

3.resources/META-INF/spring.factories

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.boomsercret.config.ProtobufAutoConfiguration

4.安装到本地仓库(mvn install)

5.使用

<dependency>
    <groupId>com.boomsercret</groupId>
    <artifactId>protobuf-spring-boot-starter</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

6.总结

其实很简单,可以参考mybatis-spring-boot-starter, spring-boot-starter-web等等.

starter源码:https://gitee.com/jsjack_wang/protobuf-spring-boot-starter
测试Demo源码:https://gitee.com/jsjack_wang/springboot-demo dev-protobuf2分支

猜你喜欢

转载自blog.csdn.net/u013219624/article/details/84939302