我有下面的代码片段。我想从www.example.com文件中读取一个属性appconfig.properties
public final class class1 implements interface1
{
@Value("${test.url}")
private String baseUrl;
//This URL is different for different environments
public class1(ClassC2 c2, ClassC3 c3) {
// Some initialization code
}
}
baseUrl始终为null。在这种情况下如何注入属性?
环境- Java 11,springframework版本- 5.3.19
2条答案
按热度按时间cygmwpex1#
你不能对非托管Spring类使用
@Value
,这意味着使用@Value
的类必须由以下之一注解:@Service
,@Component
,@Repository
,@RestController
和@Configuration
。请注意,托管类也应该被注入以供其使用,而不是使用
new
操作符进行声明。bvhaajcl2#
您可以在www.example.com中将属性声明application.properties为
然后根据您的环境创建不同的配置属性文件,如
application-dev.properties
或application-prod.properties
,并在此文件中定义TEST_URL
application-dev.properties
application-prod.properties
Sping Boot 内置了对环境或特定于配置文件的应用程序属性的支持。这意味着我们可以有多个应用程序属性,Spring将引用应用于当前活动配置文件的文件。
Sping Boot 应用程序中的默认属性文件是'application.properties'。此外,我们可以拥有遵循命名模式
application-{spring.profiles.active}.properties
的特定于配置文件的属性。例如application-dev.properties
您可以查看Spring型材文档spring profile documentation