Spring Boot系列之自定义starter

 时间:2024-10-31 12:53:55

1、创建spring boot项目,命名为mymsgstarter-spring-boot-starter。项目结构见图。其中MsgProperties、MsgAutoConfiguration、MsgService分别为配置属性类、配置类、和服务类。

Spring Boot系列之自定义starter

2、配置属性类MsgProperties,使用@ConfigurationProperties(prefix = "com.mymsg")声明,并设置prefix前缀。定义属性类中的属性msg。@ConfigurationProperties(prefix = "com.mymsg")public class MsgProperties { private String msg = "default msg"; public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; }}

Spring Boot系列之自定义starter

3、服务类MsgService,定义msg属性,此类为普通的service,提供给其他服务调用。public class MsgService { private String msg; public MsgService(String msg) { this.msg = msg; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; }}

Spring Boot系列之自定义starter

4、自动配置类MsgAutoConfiguration。注入配置属性类,并把配置属性类中的msg值赋予给service中msg。@Configuration@EnableConfigurationProperties(MsgProperties.class)@ConditionalOnClass(MsgService.class)public class MsgAutoConfiguration { @Autowired private MsgProperties msgProperties; @Bean @ConditionalOnMissingBean @ConditionalOnProperty(prefix = "com.mymsg",value = "enabled",matchIfMissing = true) public MsgService msgService() { return new MsgService(msgProperties.getMsg()); }}

Spring Boot系列之自定义starter

5、注册自动配置类spring.factoriesorg.springframework.data.repository.core.support.RepositoryFactorySupport=com.mypro.springboot.mymsgstarterspringbootstarter.MsgAutoConfiguration

Spring Boot系列之自定义starter

6、install。在idea中的maven projects窗口,找到项目,lifecycle下选中install并执行,即可install jar包至本地maven仓库。注意,maven setting中,MAVEN-Runner下的jdk要选择1.8,否则install报无效字符-paramters的异常。另,pom.xml中的<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>要去掉,否则项目jar包的目录不合规范

Spring Boot系列之自定义starter

7、新创建项目,在pom.xml中引入自定义starter的依赖,更新依赖包<dependency> <groupId>com.mypro.springboot</groupId> <artifactId>mymsgstarter-spring-boot-starter</artifactId> <version>0.0.1-SNAPSHOT</version></dependency>

Spring Boot系列之自定义starter

8、编写测试类。@RunWith(SpringRunner.class)@SpringBootApplication@ComponentScan(basePackages = {"com.mypro","com.myproject"})public class MyMsgStarterTest { @Autowired private MsgService msgService; @Test public void test() { System.out.println(msgService.getMsg()); }}

Spring Boot系列之自定义starter

9、测试结果1配置属性类MsgProperties的msg的默认值为default msg,测试结果输出为default msg。

Spring Boot系列之自定义starter

10、测试结果2在application.properties中设置msg的值,com.mymsg.msg=hello world,测试结果输出为hello world

Spring Boot系列之自定义starter
  • 盐水毛豆怎么做保持绿的
  • 蚝油生菜怎么做?
  • 刀拍凉拌黄瓜怎么做好吃
  • 蒸鱼要多久最合适?
  • 蒜蓉小油菜怎么做好吃
  • 热门搜索
    安全文明手抄报图片 舌尖上的年味手抄报 关于感恩手抄报内容 三月三手抄报图片大全 我的一本课外书手抄报 创卫手抄报资料 关于防火的手抄报 运动与健康手抄报 读书手抄报名人名言 关于森林防火的手抄报