首页 > 其他分享 >学会@ConfigurationProperties月薪过三千

学会@ConfigurationProperties月薪过三千

时间:2024-01-05 12:33:09浏览次数:38  
标签:String public 月薪 ConfigurationProperties mysql 三千 Configuration class

学会@ConfigurationProperties月薪过三千_注解

学习 @ConfigurationProperties 之前我们需要一些前置知识点:

@Value是个什么东西

首先明确:@ConfigurationProperties 是 SpringBoot 注解。

我们在讲 @Value 时知道了如何将配置文件的属性注入到变量中,废话不多说,直接上代码。

这是配置文件配置:

spring.datasource.dynamic.mysql.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.dynamic.mysql.url=jdbc:mysql://localhost:3306/db1
spring.datasource.dynamic.mysql.username=root
spring.datasource.dynamic.mysql.password=root

麻烦?

没事,有简单的,我们用简单的:

spring:
  datasource:
    dynamic:
      mysql:
        driverClassName: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://localhost:3306/db1
        username: root
        password: root

使用 @Value 获取配置:

@Configuration
public class DynamicDataSourceConfig {
    
    @Value("${spring.datasource.dynamic.mysql.driverClassName}")
    private String driverClassName;
    @Value("${spring.datasource.dynamic.mysql.url}")
    private String url;
    @Value("${spring.datasource.dynamic.mysql.username}")
    private String username;
    @Value("${spring.datasource.dynamic.mysql.password}")
    private String password;    

}

写完之后整整齐齐,帅!

如果有人觉得帅,一定还没成长成一个合格的程序员。

我们程序员追求什么?

优雅。

优雅永不过时。

优雅最重要的一条原则是什么?

不写重复代码!

所以怎么办?

有办法。

下面我们讲一下 @ConfigurationProperties 。

作用

将标注了 @ConfigurationProperties 注解的Spring容器中的Bean与配置文件中的属性进行一一绑定,用于更加快速、方便的读取配置文件的内容。

使用方式一:@Component

直接上代码:

@Component
@ConfigurationProperties(prefix = "spring.datasource.dynamic.mysql")
@Data
public class DynamicDataSourceConfig {
    
    private String driverClassName;
    private String url;
    private String username;
    private String password;    

}

写完之后清清爽爽,帅!

我们发现了几个关键点:

1.原来的 @Configuration 变成了 @Component

这个不影响,因为 @Configuration 中包含了 @Component,这里主要强调通过@Component注解将其注册成Bean。

2.@ConfigurationProperties(prefix = "")

这是我们的主角,prefix 就是匹配我们属性值的前缀,有了它我们就少写好多代码。

3.多了个@Data

@Data的功能中包含了setter方法,没有setter怎么赋值?!

使用方式二:@EnableConfigurationProperties

WTF is @EnableConfigurationProperties?

@EnableConfigurationProperties 就是:

@ConfigurationProperties,启动!

如果配置类只配置了 @ConfigurationProperties 注解,而没有使用@Component,也就是在IOC容器中是获取不到bean。

那就需要 @EnableConfigurationProperties 把使用 @ConfigurationProperties 的类进行了一次注入

怎么用呢?

需要与@Configuration一起使用。

需要与@Configuration一起使用。

需要与@Configuration一起使用。

上代码:

@ConfigurationProperties(prefix = "father")
@Data
public class Father {
   private String name;
}
@Configuration
@EnableConfigurationProperties(Father.class)
public class MainConfig {
}

实际开发中可能更多的写在 Application 启动类上。

这时候 A 同学问了:

那启动类上没有 @Configuration 啊?

有的,@SpringBootApplication 也是一个@Configuration。

又有 B 同学问了:

那我有两个配置类怎么写呢?

哎?好办。

@Configuration
@EnableConfigurationProperties(Father.class, Son.class)
public class MainConfig {
}

又有 C 同学问了:

那我有 100 个配置类呢?

聪明的 B 同学说:

我知道我知道!

@Configuration
@EnableConfigurationProperties(Father.class, Son.class, GrandSon.class, GrandgrandSon.class...)
public class MainConfig {
}

...

不愧是你。

那怎么办呢?

也有办法。


使用方式三:@ConfigurationPropertiesScan

SpringBoot 2.2.0版本以后提供了这个注解。

这个注解加到启动类上,注明包路径。

系统就会扫描这个包路径下的所有包含 @ConfigurationProperties 注解的配置类。

如果不写包路径,就默认扫描启动类所在包及其子包。

这样就不用写一百个类了。

@SpringBootApplication
@ConfigurationPropertiesScan
public class DemoAnnotationApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoAnnotationApplication.class, args);
    }
}

差不多了吧?

什么?小明,你有话说?

那既然 @Component 能注册成 Bean,那我使用 @Configuration 加 @Bean 注册又怎么说?

卧槽,还有高手?


使用方式四:@Bean

@Data
public class Animal {
    private String name;
}
@Configuration
public class MainConfig {
    @Bean
    @ConfigurationProperties(prefix = "animal")
    public Animal getAnimalBean() {
        return new Animal();
    }
}
animal.name=Wangcai

还有高手吗?

下课!



标签:String,public,月薪,ConfigurationProperties,mysql,三千,Configuration,class
From: https://blog.51cto.com/u_16410497/9100247

相关文章

  • 三千多个厂商默认帐号、默认密码(建议收藏)
    晚上好,我的网工朋友。做网工这行,多少都会遇上各种各样的厂商设备,遇上一些新设备,虽然没有更改密码,但不知道初始默认账号和密码是啥。今天就给你整理了一波,三千多个厂商默认帐号、默认密码,方便你查阅。不过,这也从侧面说明了一个问题,如果默认账号密码能用,你的设备多少有点不安全啊。安......
  • 月薪18~35K,刚成立3个月的国企正在招兵买马
    之前跟大家聊过军工央企招聘抛出“王炸”,很多朋友发信息来咨询具体招聘事宜,985、211,他是哪所学校毕业能够进入等等问题,首先感谢大家对小柒的认可,小柒也与大家一一回复,但小柒只是抛砖引玉,具体事宜还是要咨询官方更为适宜。 今天就跟大家聊一聊刚成立的国企进入合不合适,有哪些优......
  • @ConfigurationProperties(prefix = “xx.xx.xx“) 从配置文件中取值赋给类的属性
    @ConfigurationProperties(prefix=“xx.xx.xx“)从配置文件中取值赋给类的属性@ConfigurationProperties(prefix=“xx.xx.xx”)该注解的作用是从配置文件中取值赋给类的属性,当然也可以为方法的变量赋值/***服务访问URL*/@Component@ConfigurationProperties(value......
  • Java Spring Boot 配置读取进阶篇-@ConfigurationProperties && @Value
    之前我们学习了在SpringBoot如何读取application.properties/application.yaml配置文件的配置信息,在上文中我们主要是简单地实践了些简单的设置,这次我们带着同样的问题,如果配置更加复杂,我们的配置读取又应该怎么处理呢。本文的学习主要基于SpringBoot自带的库来解析配置,......
  • 程序员看过来,鸿蒙开发月薪6万,羡慕吗?
    最近有一些朋友问现在该不该学习鸿蒙系统,如果不学是不是会落伍了啊?今天跟大家说说我的看法!学习鸿蒙的目的首先我们来想想学习的目的吧!可能每个人学习一种东西的目的是不同,有的人是希望更有竞争力,可以拿到更高的薪资;有的人可能只是想为开源做点贡献;或者只是想学习一下别人的代码。所......
  • Spring Boot学习随笔- @SpringBootApplication详解、加载绝对路径配置文件、工厂创建
    学习视频:【编程不良人】2021年SpringBoot最新最全教程3.5@SpringBootApplication详解这是一个组合注解,就是由多个注解组成。下列注解红框内称为元注解(jdk提供)@Target:指定注解作用范围@Retention:指定注解什么时候生效重要注解@SpringBootConfiguration:自动配置Spring......
  • 月薪3万的程序员都避开了哪些坑
    程序员薪水有高有低,有的人一个月可能拿30K、50K,有的人可能只有2K、3K。同样有五年工作经验的程序员,可能一个人每月拿20K,一个拿5K。是什么因素导致了这种差异?我特意总结了容易导致薪水低的九大行为表现,避开这些大坑,你就离高薪不远了。习惯即刻回报他不懂得只有春天播种,秋天才会有收......
  • 继续更新三千字eight gu文后续
    第二稿八股文敷衍完了面临开题和完成工作的压力今天第一次学会了直接摆烂 虽然第一稿好不容易挤时间写完了结果说我没认真写给你美育两个字要姐编个三千字编完说我编的不好嘴巴动动提意见谁不会啊我还能给莫言提意见呢真的蛮搞笑的这人以为自己能拿捏谁呢?搞笑。结果姐......
  • 使用 @ConfigurationProperties 初始化static配置文件变量
    重点设置静态属性必须添加非静态set方法不然会读取配置文件失败还有就是prefix只支持小写配置文件项如下 配置文件packagecom.mingx.drone.config;importlombok.Data;importorg.springframework.boot.context.properties.ConfigurationProperties;importorg.spr......
  • SpringBoot获取配置文件-@Value、@ConfigurationProperties方式
    配置文件yml#phantomjs的位置地址phantomjs:binPath:windows:binPath-winlinux:binPath-linuxjsPath:windows:jsPath-winlinux:jsPath-linuximagePath:windows:imagePath-winlinux:imagePath-linuxphantomjs2:binPath2:I‘......