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

类变量的Spring Boot自定义解析器

师腾
2023-03-14

我试图实现这样的目标:

@Controller
public SomeController {
    @CustomConfig("var.a")
    private String varA;

    @CustomConfig("var.b")
    private String varB;

    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String get() {
        return varA;
    }
}
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
    CustomConfigResolver resolver = new CustomConfigResolver();
    argumentResolvers.add(resolver);
}

有人有在类变量级别解决它的经验吗?

谢谢。

共有1个答案

法和安
2023-03-14

如果您使用@value而不是自己的自定义注释,这可能会起作用。这使用内置环境:

@Order(Ordered.HIGHEST_PRECEDENCE)
@Configuration
public class TcpIpPropertySourceConfig implements InitializingBean {

    @Autowired
    private ConfigurableEnvironment env;

    @Autowired
    private RestTemplate rest;

    public void afterPropertiesSet() {
       // Call your api using Resttemplate
        RemoteProperties props = //Rest Call here;

        // Add your source to the environment.
        MutablePropertySources sources = env.getPropertySources();
        sources.addFirst(new PropertiesPropertySource("customSourceName", props)
    }
}

当你开始考虑“不愉快”的场景时,你试图实现的目标是困难的。服务器关闭/无法访问。您需要在上面的方法中考虑所有这些。

我强烈建议使用Spring Cloud Config。关于这一点的很好的指南如下:https://www.baeldung.com/spring-cloud-configuration

这提供了:-重新加载@value()属性,因此不需要自定义注释。-一个更稳定的服务器和伟大的开箱即用的Spring集成。

最重要的是,如果配置服务器宕机,很容易应用重试和后退(请参见https://stackoverflow.com/a/44203216/2082699)。这将确保您的应用程序不会在服务器不可用时崩溃。

 类似资料:
  • 本文向大家介绍SpringBoot自定义FailureAnalyzer过程解析,包括了SpringBoot自定义FailureAnalyzer过程解析的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了SpringBoot自定义FailureAnalyzer,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 官网说明 1.1 创建自己的 Fa

  • 我正在尝试从woocommerce为预订表单创建一个自定义变量product type,它基于一组变量具有不同的定价。 我已成功添加自定义产品类型。但是,如何复制可变产品针对不同属性定价的相同选项。似乎找不到任何与可变产品类型相关的资源。

  • 我一直在为我的一个类使用自定义的typeId解析器,到目前为止,我一直依赖于注释支持: 但是现在我需要通过构造函数或setter向它传递一些其他依赖项来定制类型解析器的创建,而且由于jackson是实例化它的人,我找不到绕过它的方法。 是否有方法将ObjectMapper配置为使用TypeIdResolver而不是依赖注释? 问候

  • 所有的语言,都要用到变量。在 Lua 中,不管你在什么地方使用变量,都不需要声明,并且所有的这些变量总是全局变量,除非,你在前面加上 "local"。 这一点要特别注意,因为你可能想在函数里使用局部变量,却忘了用 local 来说明。 至于变量名字,它是大小写相关的。也就是说,A 和 a 是两个不同的变量。 定义一个变量的方法就是赋值。"=" 操作就是用来赋值的 我们一起来定义几种常用类型的变量吧

  • Rust 有两种常量,可以在任意作用域声明,包括全局作用域。这两种常量都要显式地标注: const: 不可改变的值(常用类型)。 static: 在 'static 生命周期内可能发生改变的变量。 有个特例就是 "string" 原始类型。可以给它直接赋一个不可改变的 static 变量,是因为它的 类型标记:&'static str 包含了生命周期 'static。其他的引用类型都必须特别注明从

  • 本文向大家介绍SpringMVC自定义类型转换器实现解析,包括了SpringMVC自定义类型转换器实现解析的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了SpringMVC自定义类型转换器实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 页面录入的字符串:2019/12/05可以映射到实体的日期属性上,但是如果是录入2019-1