无法访问 Spring 启动 application.properties
Not able to access Spring boot application.properties
我正在尝试访问 spring 引导应用程序服务 class 中的 application.properties
值。但是每次 value 都是 null,所以它抛出 NullPointException
。我可以在控制器 class 中获得正确的端口值(如果我在控制器中添加 @Autowired
)但不能在服务 class 中获得。需要进行哪些更改才能使此属性在整个应用程序中可用?
控制器 看起来像:
@RestController
public class MyController {
MyService ss = new MyService();
@RequestMapping(value = "/myapp/abcd", method = RequestMethod.POST, consumes = {"application/json"})
public ResponseMessage sendPostMethod(@RequestBody String request) {
log.debug(" POST Request received successfully; And request body is:"+ request);
ResponseMessage response = ss.processRequest(request);
return response;
}
}
而服务 class是:
@Service
public class MyService {
private ApplicationProperties p;
@Autowired
public setProps(ApplicationProperties config) {
this.p = config;
}
public ResponseMessage processRequest(String request) {
System.out.println("Property value is:"+ p.getPort());
}
}
ApplicationProperties.java 看起来像:
@Component
@Getter
@Setter
@ConfigurationProperties
public class ApplicationProperties {
String port;
}
最后,application.properties
文件有:
port=1234
我什至尝试将 ApplicationProperties
实例从控制器传递给服务的默认构造函数,但它没有用。当我调试时,值在应用程序启动时仍然存在,但是当我进行休息 Web 服务 POST 调用时,它为空。
在您的控制器 MyController
中,您必须注入服务,替换:
MyService ss = new MyService();
作者:
@Autowired
MyService ss;
此外,您可以使用 @Value
注释,而不是 ApplicationProperties
class,从 Spring 加载application.properties
文件中的属性。看看这段代码:
import org.springframework.beans.factory.annotation.Value;
// ...
@Service
public class MyService {
@Value("${port}")
private String port;
// ...
}
我遇到了同样的问题,但出于其他原因。
对我来说,解决方案是添加 spring。在 application.properties 中的每个参数之前。
所以例如"spring.flyway.user=root".
我正在尝试访问 spring 引导应用程序服务 class 中的 application.properties
值。但是每次 value 都是 null,所以它抛出 NullPointException
。我可以在控制器 class 中获得正确的端口值(如果我在控制器中添加 @Autowired
)但不能在服务 class 中获得。需要进行哪些更改才能使此属性在整个应用程序中可用?
控制器 看起来像:
@RestController
public class MyController {
MyService ss = new MyService();
@RequestMapping(value = "/myapp/abcd", method = RequestMethod.POST, consumes = {"application/json"})
public ResponseMessage sendPostMethod(@RequestBody String request) {
log.debug(" POST Request received successfully; And request body is:"+ request);
ResponseMessage response = ss.processRequest(request);
return response;
}
}
而服务 class是:
@Service
public class MyService {
private ApplicationProperties p;
@Autowired
public setProps(ApplicationProperties config) {
this.p = config;
}
public ResponseMessage processRequest(String request) {
System.out.println("Property value is:"+ p.getPort());
}
}
ApplicationProperties.java 看起来像:
@Component
@Getter
@Setter
@ConfigurationProperties
public class ApplicationProperties {
String port;
}
最后,application.properties
文件有:
port=1234
我什至尝试将 ApplicationProperties
实例从控制器传递给服务的默认构造函数,但它没有用。当我调试时,值在应用程序启动时仍然存在,但是当我进行休息 Web 服务 POST 调用时,它为空。
在您的控制器 MyController
中,您必须注入服务,替换:
MyService ss = new MyService();
作者:
@Autowired
MyService ss;
此外,您可以使用 @Value
注释,而不是 ApplicationProperties
class,从 Spring 加载application.properties
文件中的属性。看看这段代码:
import org.springframework.beans.factory.annotation.Value;
// ...
@Service
public class MyService {
@Value("${port}")
private String port;
// ...
}
我遇到了同样的问题,但出于其他原因。 对我来说,解决方案是添加 spring。在 application.properties 中的每个参数之前。 所以例如"spring.flyway.user=root".