pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
<version>2.0.5.RELEASE</version>
</dependency>
SayHelloProperties.java
package com.fengqing.qqspringboot.test;
import org.springframework.boot.context.properties.ConfigurationProperties;
@ConfigurationProperties(prefix = "hello")
public class SayHelloProperties {
private String helloMsg = "springboot";
public String getHelloMsg() {
return helloMsg;
}
public void setHelloMsg(String helloMsg) {
this.helloMsg = helloMsg;
}
}
SayHello.java
package com.fengqing.qqspringboot.test;
public class SayHello {
private String helloMsg;
public String getHelloMsg() {
return helloMsg;
}
public void setHelloMsg(String helloMsg) {
this.helloMsg = helloMsg;
}
public String sayHello(){
return "hello " + helloMsg;
}
}
SayHelloAutoConfiguration.java
package com.fengqing.qqspringboot.test;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.annotation.Resource;
@Configuration
@EnableConfigurationProperties({SayHelloProperties.class})
@ConditionalOnClass({SayHello.class})
@ConditionalOnProperty(
prefix = "hello",
value = {"enabled"},
matchIfMissing = true
)
public class SayHelloAutoConfiguration {
@Resource
private SayHelloProperties sayHelloProperties;
@Bean
@ConditionalOnMissingBean({SayHello.class})
public SayHello sayHello() {
SayHello sayHello = new SayHello();
sayHello.setHelloMsg(sayHelloProperties.getHelloMsg());
return sayHello;
}
}
创建一个resources,并把它设置成source目录,再在resources下创建一个META-INF目录,再在META-INF目录下创建
一个spring.factories文件,内容如下
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.fengqing.qqspringboot.test.SayHelloAutoConfiguration