- 新建1个项目,并在里面新建2个子模块

| 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) |
| public class HelloServiceAutoConfiguration{ |
| |
| @ConditionalOnMissingBean(HelloService.class) |
| @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仓库中


-
新建1个项目用于测试

-
pom.xml中引入依赖
| <dependency> |
| <groupId>com.atguigu</groupId> |
| <artifactId>atguigu-hello-spring-boot-starter</artifactId> |
| <version>1.0-SNAPSHOT</version> |
| </dependency> |
| 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; |
| } |
| } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?