【问题标题】:Spring @value for system properties giving null系统属性的 Spring @value 给出 null
【发布时间】:2017-11-13 12:30:02
【问题描述】:
    public class RedisMessageListener implements MessageListener {

        @Value("#{systemProperties['pub']}") 
        private String publisher;

        @Autowired
        private LoadMoedlsFromDB ld;

        @Override
        public void onMessage( final Message message, final byte[] pattern ) {
            System.out.println( "Publisher flag::" + publisher);
            ld.downloadModels();
                if("false".equals(publisher)) {
                System.out.println(message.toString());
                }
        }}

这会输出 Publisher flag::null

但相同的配置在其他类中也可以使用,这是因为这是一个 Redis 监听类

【问题讨论】:

    标签: java spring annotations


    【解决方案1】:

    RedisMessageListener 必须是 spring bean。我不知道你的 spring 配置,但如果启用了类路径扫描,可能将@Component 添加到你的类就足够了。

    【讨论】:

    • 即使在将@Component 仍然是相同的结果之后,我也启用了类路径扫描,并且相同的变量在其他类中正确绑定,只有在这个类中它是一个问题,因为它实现了 MessageListener ,我我无法绑定此类中的任何 bean
    • 接口应该不是问题。但是如何实例化 RedisMessageListener?您必须从 spring 上下文中获取它,而不是使用 new 创建它。
    • 我正在创建 new() 这就是问题所在,谢谢@Nathanael 指出
    猜你喜欢
    • 2015-09-16
    • 1970-01-01
    • 2015-03-18
    • 2021-09-16
    • 1970-01-01
    • 2016-11-10
    • 2016-12-27
    • 2017-10-11
    • 1970-01-01
    相关资源
    最近更新 更多