starter是 springboot的翅膀,插上翅膀,就能飞得很高~
想飞的同学,跟着我,一步步 diy自己的 starter~
1.创建pom项目
创建一个pom项目,命名为 sayhello-spring-boot-starter,引入两个依赖,如图:
2. 创建 bean
SayHello.java
package bean;
public class SayHello {
// 只有一个属性
private String name;
public void setName(String name){
this.name = name;
}
// 最后输出的信息
public String getMsg(){
return name + "say hello~~";
}
}
3. 创建properties类
SayHelloProperties.java
package properties;
import org.springframework.boot.context.properties.ConfigurationProperties;
// 读取配置文件中 hello:name 的配置
@ConfigurationProperties(prefix = "hello")
public class SayHelloProperties {
private String name;
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
}
4. 创建自动配置类
MyAutoConfiguration.java
@Configuration
@ConditionalOnClass(SayHello.class)
@EnableConfigurationProperties(SayHelloProperties.class)
public class MyAutoConfiguration {
@Autowired
SayHelloProperties sayHelloProperties;
@Bean
@ConditionalOnMissingBean(SayHello.class)
public SayHello getSayHiService(){
SayHello sayHello = new SayHello();
// 从配置文件里获取name, sayHello 这个bean初始化完成
sayHello.setName(sayHelloProperties.getName());
return sayHello;
}
}
看过自动配置原理的那一章的话,这个代码看起来就很简单咯~
5. 创建 spring.factories
在 resources/META-INF 目录下,创建 spring.factories 文件,内容为自动配置类
spring.factories
org.springframework.boot.autoconfigure.EnableAutoConfiguration= MyAutoConfiguration
项目启动,就可以自动装配 MyAutoConfiguration
项目的整体结构如下:
6. Maven 打包项目
通过命令 mvn clean install 打包项目,得到jar包 sayhello-spring-boot-starter-1.0-SNAPSHOT.jar
接下来可以把jar包上传到maven私服中,也可以通过导入的方式导入到另一个项目中使用,这里使用后者。在另一个项目中操作:
7. 配置 hello:name 值
server:
port: 9000
hello:
name: wangdaye-
8. 创建测试 controller
TestController.java
@RestController
@RequestMapping("/test")
public class TestController {
@Autowired
SayHello sayHello;
@GetMapping("/hello")
public String hello(){
return sayHello.getMsg();
}
}
浏览器访问 localhost:9000/test/hello
王大爷跟你打了声招呼,看到没~~