@EnableConfigrationProperties有两个作用:
1、开启属性配置功能
2、将标注的Bean注册到容器当中
首先在实体类上标注@ConfigrationProperties(prefix = “my-user”)
指定配置的属性
@Data
@AllArgsConstructor
@NoArgsConstructor //以上三个注解是lombok注解,用来简化开发
// @Component 我们将这个注解注释掉
// 是因为一会儿用到的@EnableConfigrationProperties
// 有将标注的组件Bean注册到容器中的作用,所以用不到
@ConfigurationProperties(prefix = "my-user")
public class User {
private String name;
private String password;
}
以下是我测试类的yaml
文件:
my-user:
password: 123
name: wew
然后@EnableConfigrationProperties
注解用该标注在配置类上,也就是被@Configration
注解标注的类,用来表示已经开启属性配置功能。
/*
插一句:当我们需要用到第三方依赖的时候,我们想要把他注册到容器中
并且更改它的属性值(前提是第三方类上有@ConfigrationProperties注解)
但是我们又不能在他原有的类上加注解@Component(更改不了它的源码)
这时候就可以在自己的配置类上加上注解@EnableConfigrationProperties({xxx.class})
用就可以了
*/
@SpringBootApplication
@EnableConfigurationProperties({User.class})
public class Springboot03WebApplication {
public static void main(String[] args) {
ConfigurableApplicationContext run = SpringApplication.run(Springboot03WebApplication.class, args);
// 关于里面填的my-user-com.byb.pojo.User 当时直接写myUser报了个异常
User user = run.getBean("my-user-com.byb.pojo.User",User.class);
System.out.println("======" + user);
}
}
最后的测试结果:
关于里面填的my-user-com.byb.pojo.User 当时直接写myUser报了个异常
.NoSuchBeanDefinitionException: No bean named 'myUser' available
然后我就打印了所有类的名字
String[] names = run.getBeanDefinitionNames();
for (String name : names) {
System.out.println(name);
}
发现SpringBoot自动将名字替换成了这个
然后直接写的他测试成功了