微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

导入的Jar的Spring bean属性被应用bean定义覆盖

如何解决导入的Jar的Spring bean属性被应用bean定义覆盖

我在导入的jar文件中有一个同名的类。

@Configuration
@ConfigurationProperties(prefix = "queues")
public class QueueProperties {
String queuename;
String queuemanager;
//Rest code
}

jar文件中也存在具有相同属性的相同类。

我在配置文件中为jar bean给出了bean定义。

@Bean
public com.jar.class.path getQueueProperties() {
    return new com.jar.class.path.QueueProperties();
}

但是当应用程序启动时,它使用的是我的bean类的属性,而不是为jar类bean定义的属性

属性值保存在application.yml文件中。

queue:
  queueManager: 'queuemanager'
  queuename: 'queuename'

jar:
 class: 
   queue:
     queueManager: 'queuemanager'
     queuename: 'queuename'

我想将yml中定义的属性用于jar文件bean。可以解决这个问题吗?

解决方法

您可以使用Spring配置文件。

queue:
  queueManager: 'queuemanager'
  queuename: 'queuename'
---
spring:
  profiles: jar
queue:
  queueManager: 'queuemanager'
  queuename: 'queuename'

您可以在命令行上使用--spring.profiles.active = jar来使用您的jar配置文件。

您不应将配置用作普通的Bean,请执行以下操作:

@Configuration
public class MyConfiguration {

    
    @Bean
    @ConfigurationProperties(prefix = "queue")
    public com.jar.class.path getQueueProperties() {
        return new com.jar.class.path.QueueProperties();
    }

}

public class QueueProperties {
    String queuename;
    String queuemanager;
    //Rest code
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。