springboot 自定义starter模块
自定义starter需要三步走,定义对象类,定义配置类,定义META-INF下spring.factories文件,指定自动配置类
目录结构如下
1、定义对象类
package city.albert.entity; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties; /** * @author niunafei * @function * @email niunafei0315@163.com * @date 2020/6/30 10:26 AM * * 开启配置自动注入EnableConfigurationProperties * 引入配置属性 ConfigurationProperties * */ @EnableConfigurationProperties(SimpleBean.class) @ConfigurationProperties(prefix = "simple") public class SimpleBean { private Integer id; private String name; private Integer age; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } 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 "SimpleBean{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + '}'; } }
2、定义配置类
package city.albert.config; import city.albert.entity.SimpleBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * @author niunafei * @function * @email niunafei0315@163.com * @date 2020/6/30 10:36 AM * @Configuration指定改类为配置类 * @ConditionalOnClass指定该类加载条件为classspath下有指定的类,然后进行初始化 */ @Configuration @ConditionalOnClass(SimpleBean.class) public class SimpleConfig { static { System.out.println("classLoader"); } @Bean public SimpleBean simpleBean() { return new SimpleBean(); } }
3、定义META-INF下spring.factories文件
方式1、文件中指定自动配置类
org.springframework.boot.autoconfigure.EnableAutoConfiguration=city.albert.config.SimpleConfig
方式2、可以不定义上面文件使用Import注解也可以
4、使用
1、pom中引入包
<dependency> <groupId>city.albert</groupId> <artifactId>zdy-spring-boot-starter</artifactId> <version>1.0-SNAPSHOT</version> </dependency>
2、添加配置注入属性
simple.id=20
simple.name=小明
simple.age=18
3、注入使用
@Autowired private SimpleBean simpleBean; @Test void contextLoads() { //业务测试 System.out.println(simpleBean); }