当初各种自定义的starter不足为奇,兴许就须要本人来自定义一个starter了。学习一下starter的构建必备
starter-定义
首先须要自顶一个配置bean
package com.zhao.starter;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.boot.context.properties.EnableConfigurationProperties;@EnableConfigurationProperties(StarterBean.class)@ConfigurationProperties(prefix = "starterbean")public class StarterBean { private String id; private String name; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "StarterBean{" + "id='" + id + '\'' + ", name='" + name + '\'' + '}'; }}
而后须要通过Springboot主动注入的注解,以及Spring spi 的spring.factories将配置bean退出主动配置的治理
@Configuration@ConditionalOnClasspublic class StartBeanAutoConfiguration { static { System.out.println("custom auto configuration init "); } @Bean public StarterBean starterBean(){ return new StarterBean(); }}
资源目录下新建META-INF文件夹下spring.factories文件,
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.zhao.starter.StartBeanAutoConfiguration
pom文件
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.zhao</groupId> <artifactId>starter-demo</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-autoconfigure</artifactId> <version>2.2.2.RELEASE</version> </dependency> </dependencies></project>
应用maven install之后就能够在新建我的项目时应用了。
starter应用测试
pom定义
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.zhao</groupId> <artifactId>starter-use-demo</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>com.zhao</groupId> <artifactId>starter-demo</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.2.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <version>2.2.2.RELEASE</version> <scope>test</scope> </dependency> </dependencies></project>
启动类
@SpringBootApplicationpublic class StarterUseApplication { public static void main(String[] args) { SpringApplication.run(StarterUseApplication.class,args); }}
配置starter须要的bean的配置
starterbean.id=test123starterbean.name=zhaozhen
测试类
@RunWith(SpringRunner.class)@SpringBootTest(classes = StarterUseApplication.class)public class StarterUseTest { @Autowired StarterBean starterBean; @Test public void starUse(){ System.out.println(starterBean); }}
测试后果,失常应用
欢送搜寻关注自己与敌人共同开发的微信面经小程序【大厂面试助手】和公众号【微瞰技术】