Springboot 中的 @Value 返回 null

新手上路,请多包涵

我有 application.properties,它位于资源中

应用程序属性

hsm.provider=software
hsm.name=TestHsm
hsm.port=3001
hsm.ip=127.0.0.1
hsm.timeout=10000

控制器

@RestController
@RequestMapping("/hsm")
public class Controller {

  @Value("${hsm.ip}")
  private String ip;

  @Value("${hsm.port}")
  private String port;

  @Value("${hsm.name}")
  private String name;

  @Value("${hsm.timeout}")
  private String timeout;

  @Value("${hsm.provider}")
  private String provider;}
}

然而,当我运行应用程序时,所有变量都保持为 NULL。我错过了什么?

编辑 这是 src 文件夹的项目结构

src
├───main
│   ├───java
│   │   └───com
│   │       └───xyz
│   │           └───hsmservice
│   │               └───hsm
│   │                   └───api
│   │                           Application.java
│   │                           Controller.java
│   │                           HSM.java
│   │
│   └───resources
│       │   application.properties
│       │
│       └───META-INF
│               plugin.xml
│
└───test
    ├───java
    │       LibraryTest.java
    │
    └───resources

编辑 2 这是应用程序类

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
       SpringApplication.run(Application.class, args);
    }
}

原文由 NicO 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 666
2 个回答

好的,我用 这个 问题的最佳答案解决了它。我将变量和@Values 放在构造函数的签名中,而不是作为类变量。

原文由 NicO 发布,翻译遵循 CC BY-SA 4.0 许可协议

从您的包结构来看,这些属性绝对应该加载。唯一可能的选择是你已经将你的 Controller 类实例化为 new Controller() 而不是让spring注入类(使用 @Autowired 或构造函数)。

原文由 Urosh T. 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题