Springboot 中的 @Value 返回 null

2022-09-04 01:04:31

我有应用程序.属性,它位于资源中

apllication.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);
    }
}

答案 1

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


答案 2

从包结构来看,这些属性肯定应该加载。唯一可能的选项是,你已经实例化了你的类,而不是让弹簧注入类(使用或构造函数注入)。Controllernew Controller()@Autowired