我正在尝试从Spring Boot中的application.properties文件中提取数据

application.properties

host=localhost:8080
accountNumber=1234567890


TestController.java

@RestController
public class TestController {

private Logger logger = LoggerFactory.getLogger(TestController.class);

@Autowired
private TestService testServiceImpl;

@Value("${host}")
private String host;

@RequestMapping("/test")
public String test() {
    testServiceImpl = new TestService();
    return testServiceImpl.getValue();
}


TestServiceImpl.java

@Service
public class TestServiceImpl implements TestService{

    @Value("${accountNumber}")
    public String value;

    public String getValue(){
    return value;
}


当我对localhost:8080 / test进行REST调用时,我得到一个空值。

TestServiceImpl被实例化,但是@Value似乎不起作用。

我有什么想念的吗?

解:
我要做的就是删除testServiceImpl = new TestService();
我假设这样做是因为new TestService()覆盖了TestService的自动装配实例

最佳答案

更新 :

Spring的DI通过@Autowired注释实现,它为我们创建了对象。

@Autowired
private TestService testServiceImpl;
.
.
.

@RequestMapping("/test")
public String test() {
    // testServiceImpl = new TestService(); // make comment this line
    return testServiceImpl.getValue();
}

09-11 20:24