在Java9上使用Spring5。。。。
甚至不确定这是可能的。有一个非常简单的类:
public class Exchange {
@Autowired
private OtherService other;
@JmsListener(destination = {some.queue})
@Transactional
public void receive(String payload) {
other.send(payload)
}
}
Exchange
和OtherService
都只需要几个配置属性(即一些.queue)就可以工作。要注册(通过BeanDefinitionRegistryPostProcessor
或ApplicationContextInitializer
)Exchangebean的多个实例,但带有前缀配置属性。在注册bean时是否仍要更改属性定义?
我认为您需要两件事的组合,@ConfigurationProperties
和@Qualifier
。
让我们提供一个前缀,它适用于在该类中加载的所有属性。
@Qualifier
允许您指定您想要的潜在多个有效的@Autowire
目标中的哪一个。指定bean名称,然后设置。
快速未经测试的示例:
@Component("FooExchange")
@ConfigurationProperties(prefix = "foo")
class FooExchange implements Exchange {
@Value("enabled") private boolean enabled;
...
}
@Component("BarExchange")
@ConfigurationProperties(prefix = "bar")
class BarExchange implements Exchange {
@Value("enabled") private boolean enabled;
...
}
您要定义的属性包括:
foo.enabled = true
bar.enabled = true
当你注射一个时:
@Autowired
@Qualifier("FooExchange")
private Exchange myInjectedExchange; // Which will get FooExchange
编辑:您可以使用@EnableConfigurationProperties
注释一个配置类或主类,以启用配置属性。
我的客户机/服务器上的推送通知设备注册管理有一个小问题。 同样,这里的问题是,我有两个或更多的注册ID都可以工作(如果我旧的一个在尝试从服务器发布消息时不工作,这不会有问题,因为我可以简单地清理它)。
在我的应用程序中,我有以下代码可注册到GCM服务: 当我运行这段代码时,我在服务器中看到我的设备用2个不同的注册了两次,当服务器发送推送时,设备收到2条消息。 这是正常的事情吗?有没有办法确保只有一个?
我在不同的机器上运行具有不同的相同kafka代理集群的两个模式注册表。 该实例没有任何问题,运行良好。但是当我试图在DEV上创建一个新模式时,问题就开始了,它会转到QA。所以 是否不可能为同一个代理集群运行两个不同的模式注册表? 谢谢
问题内容: 我有一个包装连接池的类,该类从spring配置中获取其连接详细信息,如下所示: 此bean稍后在服务中使用,并与注释自动关联。 我的问题是,我该如何复制该bean并为其提供不同的连接详细信息,然后在服务中添加它。意思除了上面,我将有: 并在服务中: 问题答案: 您可以与结合使用,但在这种情况下,我建议使用: 甚至更简单:
我对Android的服务有点“问题”。关键是,每次我请求注册id时,服务器都会返回不同的注册id。最糟糕的是,在进行测试后,旧的和新的都正常工作!!(我向老用户和新用户发送推送消息,我的应用程序正在接收来自每一个用户的推送!!)。 这是我正在使用Android服务器中的寄存器: 我不知道我做错了什么,但是,这已经发生在我身上两个月了(或多或少)。在我从来没有遇到过这个问题之前,服务器通常会返回相同
我如何配置Bean,从一个新的yml文件加载和工作所有属性,从另一个新的yml加载和工作另一个Bean?最佳实践是什么? 我发现了使用的示例,并且这个bean可以读取几个资源(yml文件),但是在另一个bean中,当我读取这个时,我无法获得特定的yml,因为这个的将包含我添加到其中的所有yml资源。