0
点赞
收藏
分享

微信扫一扫

自定义starter

  • 新建1个项目,并在里面新建2个子模块
  • 自定义starter_spring

atguigu-hello-spring-boot-starter作为启动器
atguigu-hello-spring-boot-starter-autoconfigure用于自动配置包

  • 启动器子模块中添加配置包

<dependencies>
<dependency>
<groupId>com.atguigu</groupId>
<artifactId>atguigu-hello-spring-boot-starter-autoconfigure</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>

  • 在配置包子模块中编写如下

# pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
</dependencies>

# 用于读取外部配置文件
@ConfigurationProperties("atguigu.hello")
public class HelloProperties {

private String prefix;
private String suffix;

public String getPrefix() {
return prefix;
}

public void setPrefix(String prefix) {
this.prefix = prefix;
}

public String getSuffix() {
return suffix;
}

public void setSuffix(String suffix) {
this.suffix = suffix;
}
}

# 编写1个方法用于测试
/**
* 默认不要放在容器中
*/
public class HelloService {

@Autowired
HelloProperties helloProperties;

public String sayHello(String userName){
return helloProperties.getPrefix() + ":"+userName+"》"+helloProperties.getSuffix();
}
}

# 用于自动配置
@Configuration
@EnableConfigurationProperties(HelloProperties.class) //默认HelloProperties放在容器中
public class HelloServiceAutoConfiguration{

@ConditionalOnMissingBean(HelloService.class) // 当容器中没有HelloService时才自动注入
@Bean
public HelloService helloService(){
HelloService helloService = new HelloService();
return helloService;
}

}

# META-INF中编写spring.factories
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.atguigu.hello.auto.HelloServiceAutoConfiguration

  • ctrl选中后,打包到maven仓库中
  • 自定义starter_Spring Boot_02

自定义starter_spring_03

  • 新建1个项目用于测试
  • 自定义starter_Spring Boot_04

  • pom.xml中引入依赖

<dependency>
<groupId>com.atguigu</groupId>
<artifactId>atguigu-hello-spring-boot-starter</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>

  • 配置yml

atguigu.hello.prefix=ATGUIGU
atguigu.hello.suffix=88888

  • 编写控制类测试

@RestController
public class HelloController {

@Autowired
HelloService helloService;

@GetMapping("/hello")
public String sayHello(){

String s = helloService.sayHello("张三");
return s;
}
}

  • 如果自己在容器中注入HelloService,就不会使用自定starter中的HelloService

@Configuration
public class MyConfig {

@Bean
public HelloService helloService(){
HelloService helloService = new HelloService();
return helloService;
}
}



举报

相关推荐

0 条评论