springboot中@ConfigurationProperties无效果的解决方法
作者:五敷有你
原因有一下几点
前缀prefix没写对(概率不大,但也有)
@Data @ConfigurationProperties(prefix = "message") public class MyBean { private String msg; public MyBean(){ System.out.println("MyBean初始化完成"); } }
2.类的方法中没有setter
解决方法:
- 用lombok的注解
- 或者自己写getter setter
3.写了ConfigurationProperties但是没写Component
交给spring管理
4.是用AnnotationConfigApplicationContext(MyBeanConfig.class);获取的bean不是一个spring容器(我的问题在于这个)
用spring容器的自动注入是有值的
但自己单开一个spring容器,这是两个,所以不会有值,有值的放到了第一个spring的容器中
第一个spring容器在
第二个spring容器是我在测试类开的,
@ConfigurationProperties
在Spring Boot中注解@ConfigurationProperties有三种使用场景。
场景一
使用@ConfigurationProperties和@Component注解到bean定义类上,这里@Component代指同一类实例化Bean的注解。
基本使用实例如下:
// 将类定义为一个bean的注解,比如 @Component,@Service,@Controller,@Repository // 或者 @Configuration @Component // 表示使用配置文件中前缀为user1的属性的值初始化该bean定义产生的的bean实例的同名属性 // 在使用时这个定义产生的bean时,其属性name会是Tom @ConfigurationProperties(prefix = "user1") public class User { private String name; // 省略getter/setter方法 }
对应application.properties配置文件内容如下:
user1.name=Tom
在此种场景下,当Bean被实例化时,@ConfigurationProperties会将对应前缀的后面的属性与Bean对象的属性匹配。符合条件则进行赋值。
场景二
使用@ConfigurationProperties和@Bean注解在配置类的Bean定义方法上。以数据源配置为例:
@Configuration public class DataSourceConfig { @Primary @Bean(name = "primaryDataSource") @ConfigurationProperties(prefix="spring.datasource.primary") public DataSource primaryDataSource() { return DataSourceBuilder.create().build(); } }
这里便是将前缀为“spring.datasource.primary”的属性,赋值给DataSource对应的属性值。
@Configuration注解的配置类中通过@Bean注解在某个方法上将方法返回的对象定义为一个Bean,并使用配置文件中相应的属性初始化该Bean的属性。
场景三
使用@ConfigurationProperties注解到普通类,然后再通过@EnableConfigurationProperties定义为Bean。
@ConfigurationProperties(prefix = "user1") public class User { private String name; // 省略getter/setter方法 }
这里User对象并没有使用@Component相关注解。
而该User类对应的使用形式如下:
@SpringBootApplication @EnableConfigurationProperties({User.class}) public class Application { public static void main(String[] args) throws Exception { SpringApplication.run(Application.class, args); } }
上述代码中,通过@EnableConfigurationProperties对User进行实例化时,便会使用到@ConfigurationProperties的功能,对属性进行匹配赋值。
到此这篇关于springboot中@ConfigurationProperties无效果的文章就介绍到这了,更多相关springboot @ConfigurationProperties内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
- SpringBoot中@Value获取值和@ConfigurationProperties获取值用法及比较
- SpringBoot中的@ConfigurationProperties注解解析
- SpringBoot中@ConfigurationProperties注解的使用与源码详解
- 关于SpringBoot的@ConfigurationProperties注解和松散绑定、数据校验
- SpringBoot @Value与@ConfigurationProperties二者有哪些区别
- springboot如何静态加载@configurationProperties
- SpringBoot2底层注解@ConfigurationProperties配置绑定
- Springboot中@ConfigurationProperties轻松管理应用程序的配置信息详解