Spring Boot:如何将@RestController用于变量来自属性文件的类
所以我对Spring是新手,我基本上是第一次尝试做一个REST服务。我想返回的一些数据是来自属性文件的数据 这是我的配置bean:Spring Boot:如何将@RestController用于变量来自属性文件的类,rest,spring-boot,spring-restcontroller,spring-config,Rest,Spring Boot,Spring Restcontroller,Spring Config,所以我对Spring是新手,我基本上是第一次尝试做一个REST服务。我想返回的一些数据是来自属性文件的数据 这是我的配置bean: @Configuration @PropertySource("classpath:client.properties") public class PropertyConfig { @Bean public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceh
@Configuration
@PropertySource("classpath:client.properties")
public class PropertyConfig {
@Bean
public static PropertySourcesPlaceholderConfigurer
propertySourcesPlaceholderConfigurer() {
return new PropertySourcesPlaceholderConfigurer();
}
}
这是包含我想从API返回的信息的类。当我将鼠标悬停在这些值上时,我可以看到该属性正在被注入
public class ProviderInfo {
@Value("${op.iss}") private String issuer;
@Value("${op.jwks_uri}") private String jwksURI;
@Value("${op.authz_uri}") private String authzURI;
@Value("${op.token_uri}") private String tokenURI;
@Value("${op.userinfo_uri}") private String userInfoURI;
// Getter methods
}
这是REST控制器
@RestController
public class ProviderInfoController {
@RequestMapping(value = "/provider-info", method = RequestMethod.GET)
public ProviderInfo providerInfo() {
return new ProviderInfo();
}
}
当我导航到该端点时,所有内容都为空:
{"issuer":null,"jwksURI":null,"authzURI":null,"tokenURI":null,"userInfoURI":null}
有人能看出我做错了什么吗?或者,总的来说,是否有更好的方法来实现这一点
谢谢 @Value注释的处理由Spring完成,因此需要从Spring获取ProviderInfo实例,以便实际设置值
@RestController
public class ProviderInfoController {
@Autowired
private ProviderInfo providerInfo;
@RequestMapping(value = "/provider-info", method = RequestMethod.GET)
public ProviderInfo providerInfo() {
return providerInfo;
}
}
这还要求Spring选择并处理ProviderInfo类。@Value注释的处理由Spring完成,因此您需要从Spring获取ProviderInfo实例,以便实际设置值
@RestController
public class ProviderInfoController {
@Autowired
private ProviderInfo providerInfo;
@RequestMapping(value = "/provider-info", method = RequestMethod.GET)
public ProviderInfo providerInfo() {
return providerInfo;
}
}
这还要求Spring选择并处理ProviderInfo类。此外,您需要使用@Component或@Service将ProviderInfo类添加到Springbean生命周期中,如下所示:
@Component
public class ProviderInfo {
@Value("${op.iss}") private String issuer;
@Value("${op.jwks_uri}") private String jwksURI;
@Value("${op.authz_uri}") private String authzURI;
@Value("${op.token_uri}") private String tokenURI;
@Value("${op.userinfo_uri}") private String userInfoURI;
// Getter methods
}
只有这样,您才能在ProviderInfo控制器类中使用@Autowired。此外,您还需要使用@Component或@Service将ProviderInfo类添加到SpringBean生命周期中,如下所示:
@Component
public class ProviderInfo {
@Value("${op.iss}") private String issuer;
@Value("${op.jwks_uri}") private String jwksURI;
@Value("${op.authz_uri}") private String authzURI;
@Value("${op.token_uri}") private String tokenURI;
@Value("${op.userinfo_uri}") private String userInfoURI;
// Getter methods
}
只有这样,您才能在ProviderInfo控制器类中使用@Autowired。创建
ProviderInfo
托管bean的一种方法是使用@Component
对其进行注释ProviderInfo
托管bean的一种方法是使用@Component
对其进行注释