当前位置: 首页 > 知识库问答 >
问题:

Spring Boot:如何将@RestController用于变量来自属性文件的类

毕黎昕
2023-03-14

所以我是Spring的新手,我基本上是第一次尝试提供REST服务。我想返回的一些数据是来自属性文件的一些数据。

这是我的配置bean:

@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();
    }
}

当我导航到该endpoint时,所有内容都为空:

{"issuer":null,"jwksURI":null,"authzURI":null,"tokenURI":null,"userInfoURI":null}

有人能看出我做错了什么吗?或者是否有更好的方法来实现这一点?

谢谢!

共有2个答案

宇文卓
2023-03-14

此外,您需要使用@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
}

只有这样,您才能在ProviderInfoController类中使用@autowmed。

姬昊焱
2023-03-14

@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类。

 类似资料:
  • 我想从1中得到一个变量。将js文件复制到另一个。js文件。现在我有主要的问题。js 我有平衡感。js 我得到了错误 常量余额=需要(“./余额”); ReferenceError:未定义require 我通过windows PowerShell运行此代码,节点版本为:v14。10.1

  • 我有一个函数,它应该创建一个变量,并用变量乘积的值,属性填充变量。为了变得更加灵活,我没有为产品属性创造值 我试过上百种方法,使值坚持变化,但他们没有。变体是在后端创建的,但它没有Atributed??????请帮忙!!我做这个已经4天了。( 归属于产品atributes的唯一值是“空转”(>&gtempty<<)价值。////////////变量数据-&>;数组(key->Value),以便产品

  • 我有一个现有的属性文件,如下所示 系统中有两个操作将获取并设置值。 其思想是,当I调用为true时,该值必须反映在application.properties文件中。 有可能实现我想要的吗?或者我需要一个额外的配置文件吗?

  • 我试图将docker-compose.yml文件中的值动态地传递给Wildfly配置。我想有灵活的邮件配置-只是为了快速改变地址,或用户名,或端口… 在本例中,我试图通过将docker-compose.yml中的环境变量转发给docker-compose.yml中的dockerfile作为参数“-dargumentname=$environmentvariable。当前wildfly在start上

  • 问题内容: 因此,我有两个不同的文件,如下所示: file1.py file2.py 但是我似乎无法让file2识别来自file1的变量,即使它已经导入到file1中也是如此。如果可以某种方式实现,那将非常有帮助。 问题答案: 导入在使得全球(即,模块级)的约束名字提供给下面的代码-唯一的此类名称是。它并 没有 做反向:在定义的名称并不提供给代码的时候进口。即使您以正确的方式(如@nate正确建议

  • 问题内容: 我想修改以下代码以从文本文件中读取节点(相对于硬编码值) 此外,以以下格式从文本文件中读取数据: P1 = 3 5 1 -1 0 8 P2 = 5 6 2 -1 1 7 0 -4 等等… 命名值P(x)并输入剩余数据。有什么建议吗? 问题答案: 除非您的数据已经是二进制格式,否则我不会使用。以下示例用于撰写。 请注意,为方便应用 Horner方案 ,最高阶系数是第一个,如本示例所示。