我在spring-boot中编码。我试图在其他包中获取properties.properties的值但没有成功。例如,在classe ClassUtils.java中,testValue的值始终为null
这是我的项目
这是我的代码:
package com.plugins.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.plugins.domain.ClassUtils;
@RestController
public class SearchContactController {
@Value("${environnement.test}")
String testValue;
@Value("${environnement.url}")
String urlValue;
@RequestMapping(value = "/test")
public String pingRequest() {
System.out.println("value ===> " + testValue + " /// " + urlValue);
return "test !" + ClassUtils.getTestValue();
}
}
这是我的第二堂课,我无法获得testValue变量的值:
package com.plugins.domain;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component
public class ClassUtils {
@Value("${environnement.test}")
static String testValue;
public static String getTestValue(){
return "The return "+testValue;
}
}
这是我的springApp.java
package com.plugins;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringBootVideApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootVideApplication.class, args);
}
}
答案 0 :(得分:1)
在应用程序中启用@ComponentScan({" com.plugins"})
访问 application.properties
中定义的属性myapp.url="xxxxxx"
你班上的
@Value("${myapp.url}")
private String testValue;
但是这不能是一个静态变量,如果它是一个静态变量你通过定义setter方法来做这样的hack
private static String testValue;
@Value("${myapp.url}")
public void testValue(String value) {
testValue = value;
}
答案 1 :(得分:1)
我在类中使用addin @Autowired解决了这个问题,该类使用了另一个类的方法,这是一个片段
// Class: SearchContactController.java
@Autowired
ClassUtils cd;
@RequestMapping(value = "/ping")
public String pingRequest() {
return "Ping OK !" + cd.getTestValue();
}