抽取通用模块做为项目的一个spring boot starter。可参照mybatis的写法。spring
IDEA建立Empty Project并添加以下2个module,一个基本maven模块,另外一个引入spring-boot-starter依赖。springboot
1) xxx-spring-boot-starter - 引入依赖并管理依赖版本mybatis
demo-spring-boot-starterapp
<dependencies> <dependency> <groupId>org.chris</groupId> <artifactId>demo-spring-boot-autoconfigure</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> </dependencies>
2) xxx-spring-boot-autoconfigure - xxx的自动配置类maven
demo-spring-boot-autoconfigurespring-boot
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> </dependencies>
属性类DemoProperties
@ConfigurationProperties(prefix = "chris.demo") public class DemoProperties { private String name; private String content; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } }
功能类DemoService测试
public class DemoService { private DemoProperties demoProperties; public DemoProperties getDemoProperties() { return demoProperties; } public void setDemoProperties(DemoProperties demoProperties) { this.demoProperties = demoProperties; } public String demoShow(){ return this.demoProperties.getName() + " ----- " + this.demoProperties.getContent(); } }
自动配置类DemoAutoConfigurationthis
@Configuration @ConditionalOnWebApplication @EnableConfigurationProperties(DemoProperties.class) public class DemoAutoConfiguration { @Autowired private DemoProperties demoProperties; @Bean public DemoService demoService(){ DemoService demoService = new DemoService(); demoService.setDemoProperties(demoProperties); return demoService; } }
最后添加DemoAutoConfiguration到EnableAutoConfiguration中spa
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ org.chris.springboot.DemoAutoConfiguration
在新的spring boot项目中若是须要引用以上starter,只须要在依赖中添加以下,code
<dependency> <groupId>org.chris</groupId> <artifactId>demo-spring-boot-starter</artifactId> <version>1.0-SNAPSHOT</version> </dependency>
测试类DemoController
@RestController public class DemoController { @Autowired private DemoService demoService; @GetMapping("demo") public String demo(){ return demoService.demoShow(); } }
附上代码