1 pom文件引入依赖
先新建一个maven工程。
然后,在pom文件引入需要的依赖:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
<version>2.1.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure-processor</artifactId>
<version>2.1.7.RELEASE</version>
</dependency>
</dependencies>
2 编写配置类
import org.springframework.boot.context.properties.ConfigurationProperties;
@ConfigurationProperties(prefix = "com.jamie")
public class JamieProperties {
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
3 编写自动装配类
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(JamieProperties.class)
public class JamieAutoConfiguration {
@Resource
private JamieProperties jamieProperties;
@Bean
public Jamie jamie() {
Jamie jamie = new Jamie();
jamie.setName(jamieProperties.getName());
jamie.setAge(jamieProperties.getAge());
return jamie;
}
}
下面这个类是需要放入IOC容器的bean
public class Jamie {
private String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Jamie{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
4 编写spring.factories文件
在resources文件下新建一个META-INF文件夹,然后在该文件夹下新建一个文件叫spring.factories
在spring.factories文件中输入自动装配的全类名,如果有多个自动装配类则用英文逗号分隔
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.jamie.starter.JamieAutoConfiguration
实现原理:
SpringFactoriesLoader是spring的一个工具类,它会从classpath下的META-INF/spring.factories
文件中加载配置。
将spring.factories文件中org.springframework.boot.autoconfigure.EnableAutoConfiguration
对应的value值通过Java反射实例化为有@Configuration的JavaConfig形式的IOC配置项,然后将其中的bean放入到IOC容器中。
4 将项目安装到本地仓库或远程仓库
我这里就简单的安装到本地仓库了
点击右侧的 Maven
--> install
,然后等待项目安装成功
5 在项目中的使用
5.1 新创建一个springboot的项目
5.2 引入刚刚我们自己编写的starter的依赖
<dependency>
<groupId>com.jamie</groupId>
<artifactId>springboot-starter-jamie</artifactId>
<version>1.0.0</version>
</dependency>
5.3 在配置文件中配置参数
com.jamie.name=hello
com.jamie.age=26
5.4 使用自动装配的bean
@RestController
public class SpringbootStarterController {
@Resource
private Jamie jamie;
@GetMapping("/jamie")
public String jamie() {
return jamie.toString();
}
}
到此,我们自己实现的starter就完成了。