我创建了一个简单的示例 Spring Boot Web 应用程序,并且运行良好。也就是说,Web 应用程序启动后,控制器通过调用服务并返回结果来响应请求。这让我相信我拥有基本权利。我现在正在尝试通过application.properties
文件添加外部配置,但我根本无法加载它。
我正在使用 Spring Boot 2、Spring 5、Eclipse 和 Maven。我的pom.xml
包含:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.0.1.RELEASE</version>
</dependency>
我的网络应用程序类是:
@SpringBootApplication(scanBasePackages="com.example.root")
public class ExampleWebApp {
public static void main(String[] args) {
SpringApplication.run(ExampleWebApp.class, args);
}
}
我尝试加载环境的服务类是:
@Service
public class DataService {
@Value("${com.example.property}")
private String p1;
@Value("com.example.property")
private String p2;
@Autowired
private Environment env;
public DataService() {
...
}
}
我的application.properties
文件包含:
com.example.property=value
构建 Web 应用程序时,application.properties
会正确复制到WEB-INF/classes
.
当应用程序运行,我把一个破发点中的服务的构造函数,p1
,p2
和env
是null
。关于我如何调试这个的任何建议?
通过构造函数调试将不起作用。由于值是通过反射注入的,这发生在调用构造函数之后。
如果你想调试试试 @PostConstruct
@PostConstruct
public void someMethodName() {
System.out.println(p1);
}
您为 p2( @Value("com.example.property")
)注入的方式是错误的。p1( @Value("${com.example.property}")
) 是正确的方法
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句