java 将appconfig.properties与not bean类一起使用

r6l8ljro  于 2023-04-19  发布在  Java
关注(0)|答案(2)|浏览(107)

我有下面的代码片段。我想从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

cygmwpex

cygmwpex1#

你不能对非托管Spring类使用@Value,这意味着使用@Value的类必须由以下之一注解:@Service@Component@Repository@RestController@Configuration
请注意,托管类也应该被注入以供其使用,而不是使用new操作符进行声明。

bvhaajcl

bvhaajcl2#

您可以在www.example.com中将属性声明application.properties为

spring.profiles.active=dev
test.url=${TEST_URL}

然后根据您的环境创建不同的配置属性文件,如application-dev.propertiesapplication-prod.properties,并在此文件中定义TEST_URL
application-dev.properties

TEST_URL=some_test_url_for_dev

application-prod.properties

TEST_URL=some_test_url_for_prod

Sping Boot 内置了对环境或特定于配置文件的应用程序属性的支持。这意味着我们可以有多个应用程序属性,Spring将引用应用于当前活动配置文件的文件。
Sping Boot 应用程序中的默认属性文件是'application.properties'。此外,我们可以拥有遵循命名模式application-{spring.profiles.active}.properties的特定于配置文件的属性。例如application-dev.properties
您可以查看Spring型材文档spring profile documentation

相关问题