Springbean属性由应用程序bean定义覆盖

ljsrvy3e  于 2021-07-05  发布在  Java
关注(0)|答案(1)|浏览(630)

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

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

jar文件中也存在具有相同属性的同一类。
我在配置文件中给出了jarbean的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'

我想为jar文件bean使用在yml中定义的属性。有什么解决办法吗?

py49o6xq

py49o6xq1#

您可以使用spring profile。

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
}

相关问题