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

前言

一、SpringBoot自动装配--@Autowired

1.基础概念

2.执行流程(简易)

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

1.相关注解

2.实现步骤

三、踩坑点:SpringBoot 和 fastdfs-client 依赖冲突

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

解决方案:exclusion


前言

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


一、SpringBoot自动装配--@Autowired

1.基础概念

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

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

2.执行流程(简易)

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

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

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

SpringBoot自动装配封装自定义方法 + 通过Properties抽取公共属性配置_第1张图片

二、通过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 和 fastdfs-client 依赖冲突

版本信息:

        SpringBoot - 2.3.9.RELEASE

        fastdfs-client - 1.26.7

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

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

解决方案:exclusion


    com.github.tobato
    fastdfs-client
    1.26.7
    
        
            ch.qos.logback
            logback-classic
        

        
            org.springframework.boot
            spring-boot-autoconfigure
        

        
            org.springframework
            spring-core
        
        
            org.springframework
            spring-context
        
    

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

你可能感兴趣的:(Java,java,spring,boot)