【问题标题】:Spring @Value Returns Null On Class Implementation When @Configuration当@Configuration 时,Spring @Value 在类实现上返回 Null
【发布时间】:2021-05-04 10:44:03
【问题描述】:

我有一个实现接口的类。我想使用 springs @Value 注释注入一些字段。这在项目的其他部分没有问题,但在这个类上没有问题。该类具有 @Configuration 的注释,从研究中可以看出,它旨在解决这些问题并将其放入 Spring Boot 上下文中。我的代码是

@Configuration
public class RedissonRegionFactory implements RegionFactory
{
    @Value("${spring.redis.host}")
    private String redisHost; // returns null
    @Value("${spring.redis.port}")
    private String redisPort; // returns null

我在项目的其他地方使用了这些变量,并且没有问题地返回。它们存储在 application.properties 文件中。另一件事是@Autowire 也不起作用,很可能与同一问题有关。我需要做哪些更改才能使其正确接线?

【问题讨论】:

  • 你从这个 RegionFactory 覆盖了哪些方法?
  • 开始、停止、isMinimalPutsEnabledByDefault、getDefaultAccessType、nextTimestamp、buildEntityRegion、buildNaturalIdRegion、buildCollectionRegion 和 buildTimestampsRegion
  • RedissonRegionFactory 成为@Component 似乎更有意义

标签: java spring annotations spring-annotations


【解决方案1】:

检查 Spring 指定要扫描的包。 这可以是一个 @ComponentScan 注释,其中包含一个包,而不是包含您的 RedissonRegionFactory 的包。 或者你的类在包中的级别比你的 SpringApplication 高。

【讨论】:

  • 它已经在 \@ComponentScan 包中。它与我的所有其他 \@Configuration 类'在同一个文件夹中,它们都可以正常工作并且可以毫无问题地使用 @Value 并按预期自动装配
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-20
  • 1970-01-01
  • 2018-02-12
  • 1970-01-01
  • 1970-01-01
  • 2016-10-24
  • 1970-01-01
相关资源
最近更新 更多