springboot中@ConfigurationProperties无效果的解决方法

 更新时间:2024年06月14日 09:24:29   作者:五敷有你  
本文主要介绍了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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java Jmeter全局变量设置过程图解

    Java Jmeter全局变量设置过程图解

    这篇文章主要介绍了Java Jmeter全局变量设置过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • 解决Mybatis-plus自定义TypeHandler查询映射结果一直为null问题

    解决Mybatis-plus自定义TypeHandler查询映射结果一直为null问题

    这篇文章主要介绍了解决Mybatis-plus自定义TypeHandler查询映射结果一直为null问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • Java 继承方法实例详解

    Java 继承方法实例详解

    这篇文章主要介绍了Java继承中方法实例,非常的实用,这里推荐给大家,有需要的小伙伴可以参考下
    2017-04-04
  • SpringBoot注解@ConditionalOnClass底层源码实现

    SpringBoot注解@ConditionalOnClass底层源码实现

    这篇文章主要为大家介绍了SpringBoot注解@ConditionalOnClass底层源码实现,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • SpringBoot中mapper.xml文件存放的两种实现位置

    SpringBoot中mapper.xml文件存放的两种实现位置

    这篇文章主要介绍了SpringBoot中mapper.xml文件存放的两种实现位置,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • java实现简单的给sql语句赋值的示例

    java实现简单的给sql语句赋值的示例

    这篇文章主要介绍了java实现简单的给sql语句赋值的示例,需要的朋友可以参考下
    2014-05-05
  • Java中自定义LRU缓存详解

    Java中自定义LRU缓存详解

    这篇文章主要介绍了Java中自定义LRU缓存详解,基于LRU算法的缓存系统,可以在达到缓存容量上限时,清理最近最少使用的数据,为新的数据的插入腾出空间,需要的朋友可以参考下
    2023-09-09
  • Spring Boot Rest常用框架注解详情简介

    Spring Boot Rest常用框架注解详情简介

    这篇文章主要介绍了Spring Boot Rest常用框架注解,通过将尝试解释Spring Boot Rest API的不同注释,这些注释是Spring Boot中REST API所必需的,需要的朋友可以参考一下
    2022-06-06
  • SpringBoot实现application配置信息加密

    SpringBoot实现application配置信息加密

    在配置文件中,我们有开发环境配置和生产环境配置,而生产环境的配置信息是需要做好防护的,避免外泄,所以本文为大家整理了application配置信息加密的方法,需要的可以参考下
    2023-07-07
  • Spring事务失效的一种原因关于this调用的问题

    Spring事务失效的一种原因关于this调用的问题

    这篇文章主要介绍了Spring事务失效的一种原因关于this调用的问题,本文给大家分享问题原因及解决办法,通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2021-10-10

最新评论