spring 外部资源配置 以及自定义starter场景

参考资料

1. Spring Boot will automatically find and load application.properties and application.yaml files from the following locations when your application starts:

2. The classpath root

3. The classpath /config package

4. The current directory

5. The /config subdirectory in the current directory

6. Immediate child directories of the /config subdirectory

下面是自定义starter场景

  • 前置知识

当@EnableConfigurationProperties注解应用到你的@Configuration时,任何被@ConfigurationProperties注解的beans将自动被Environment属性配置。这种风格的配置特别适合与SpringApplication的外部YAML配置进行配合使用。

  • 环境准备
    使用idea创建项目模块hello-starter 和hello-starter-autoconfigure

1、在hello-starter-autoconfigure模块写好服务HelloService

public class HelloService {
    @Autowired
    HelloProperties helloProperties;
    public String hello(String userName){
        return helloProperties.getPrefix()+ userName + helloProperties.getSuffix();
    }
}

2、在hello-starter-autoconfigure模块 HelloProperties

package com.gaojl.autoconfig.bean;

import org.springframework.boot.context.properties.ConfigurationProperties;

@ConfigurationProperties(prefix = "com.gao")
public class HelloProperties {
    String prefix;
    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;
    }
}

3、在hello-starter-autoconfigure模块 自动配置类

@Configuration
@ConditionalOnMissingBean(HelloService.class)
@EnableConfigurationProperties(HelloProperties.class)//绑定HelloProperties 并放入容器中
public class HelloAutoConfiguration {
    @Bean
    public HelloService getHelloService(){
        return new HelloService();
    }
}

4、在hello-starter-autoconfigure模块 Resources 文件夹下/META-INF/spring.factories配置自动装配的类

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
  com.gaojl.autoconfig.auto.HelloAutoConfiguration

5、 在hello-starter 模块引入hello-starter-autoconfigure模块打好的包

  • 注意事项
    hello-starter-autoconfigure模块不需要test目录 不需要有Main方法。

这样这个starter就可以被其他项目使用了。其他项目使用的步骤当然就是
1、倒入我们的制作好的场景

 <dependency>
            <groupId>com.gaojl</groupId>
            <artifactId>custom-hello-starter</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

2、由于HelloService在容器中没有HelloService.class时会自动注入HelloService,期间会从Prefix=com.gao 的application.yml中嗱值。所以我们需要在配置文件中配置
3、在controller层配置使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值