源码github
pomPropertiesorg.springframework.boot spring-boot-dependencies 2.6.7 pom import org.springframework.boot spring-boot-autoconfigure compile org.springframework.boot spring-boot-configuration-processor compile true
@ConfigurationProperties(prefix = "com.zl.starter")
public class ZlProperties {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
需要被配置的bean
public class HelloHandler {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String sayHello(){
return getName()+" say Hello";
}
}
配置类配置类的@Configuration可以删掉。原理在springboot starter原理简单介绍和spring @Import介绍找到。
@Configuration
@EnableConfigurationProperties(ZlProperties.class)
//生成spring-autoconfigure-metadata.properties
@ConditionalOnClass({HelloHandler.class})
public class ZlAutoConfiguration{
private final ZlProperties zlProperties;
@Autowired
public ZlAutoConfiguration(ZlProperties properties) {
this.zlProperties = properties;
}
@Bean
public HelloHandler helloHandler(){
HelloHandler helloHandler = new HelloHandler();
helloHandler.setName(zlProperties.getName());
return helloHandler;
}
}
spring.factories配置
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.starter.autoconfigure.ZlAutoConfiguration使用 引入starter
配置application.propertiescom.zl zl-spring-boot-starter 0.0.1
com.zl.starter.name=hh
注入HelloHandler @Resource
private HelloHandler helloHandler;
@PostConstruct
public void a() {
System.out.println(helloHandler.sayHello());
}
结果为: hh say Hello。
附A生成的spring-autoconfigure-metadata.properties
附B官方连接



