SpringBoot自动装配封装自定义方法 + 通过Properties抽取公共属性配置


前言

   随笔记录下学习过程中遇到的一些问题和解决方法,主要目的梳理自己的思路和方便自己日后回顾,写的可能不是很严谨和细致。


一、SpringBoot自动装配--@Autowired

1.基础概念

       IOC容器 -----负责对象的创建、初始化等一系列工作,主要作用--->管理Bean,工程中需要进行 @Autowired的都应该存放到这里

        Bean ----被IOC容器所有创建或管理的对象

2.执行流程(简易)

(1)扫描依赖模块中META-INF/spring.factories,解析文件,找出装配类

(2)执行装配类,将@Bean注解的方法,注册到IOC容器

(3)在目标工程中注入对象(@Autowired)

二、通过Properties抽取公共属性配置

1.相关注解

@Data --->通常使用在实体Bean上,具有@Getter、@Setter、@ToString、 @EqualsAndHashCod 、@RequiredArgsConstructor的作用

@EnableConfigurationProperties --->将带有 @ConfigurationProperties 注解的类(没有注解@Component)注册到容器,转化为bean对象使用

@ConfigurationProperties ---> 将配置文件(yml、properties)中的文件属性,映射成一个对象 

2.实现步骤

(1)定义Propertis对象;通过@ConfigurationProperties(prefix = "xxx.xxx")和配置文件(yml、properties进行映射)

代码如下(示例):注意属性名称的对应

tanhua:
  sms:
    singName: 大喵的博客
    templateCode: xxxxx
    accessKey: xxxxx
    secret: xxxxx
@Data
@ConfigurationProperties(prefix = "tanhua.sms")
public class SmsProperties {
    public String singName;
    public String templateCode;
    public String accessKey;
    public String secret;
}

(2)以构造方法将xxxxProperties传入要使用的对象中

private SmsProperties smsProperties;

    public SmsTemplate(SmsProperties smsProperties){
        this.smsProperties = smsProperties;
    }
public class TanhuaAutoConfiguration {

    @Bean
    public SmsTemplate smsTemplate (SmsProperties smsProperties){
        return new SmsTemplate(smsProperties);
    }
}

(3)在自动装配类上添加@EnableConfigurationProperties使Properties对象生效

@EnableConfigurationProperties({
        SmsProperties.class
})
public class TanhuaAutoConfiguration {

    @Bean
    public SmsTemplate smsTemplate (SmsProperties smsProperties){
        return new SmsTemplate(smsProperties);
    }
}

三、踩坑点:SpringBoot 和 <artifactId>fastdfs-client</artifactId> 依赖冲突

版本信息:

        SpringBoot - 2.3.9.RELEASE

        fastdfs-client - 1.26.7

触发场景:运行一个@SpringBootTest注解类的方法

提示信息:爆红了很长一串,总结来说就是依赖冲突

解决方案:exclusion

<dependency>
    <groupId>com.github.tobato</groupId>
    <artifactId>fastdfs-client</artifactId>
    <version>1.26.7</version>
    <exclusions>
        <exclusion>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
        </exclusion>

        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
        </exclusion>

        <exclusion>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
        </exclusion>
    </exclusions>
</dependency>

目前尚不知这样解决对后续开发有什么影响,但是项目能启动~~~✿✿ヽ(°▽°)ノ✿ ,特喵的这个坑我踩了几个小时!!!!!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值