版权声明:本文为博主原创文章,未经博主允许不得转载。 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分支