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

Spring:将属性作为值注入注释

叶建柏
2023-03-14

我试图向自定义注释中注入一个值,但Spring似乎没有进行评估。

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyCustomAnno {
    String var1();
    String var2();
}
public class MyClass {

    @MyCustomAnno(var1 = "${some.property.one}",
                  var2 = "${some.property.two}")
    public void someMethod() {
    // do something here
    }
}
@Aspect
public class MyAop {

    @Around(value="@annotation(myCustomAnno)",argNames="myCustomAnno")
    public Object aroundMethod(MyCustomAnno myCustomAnno) {
        int intVar1 = Integer.parseInt(myCustomAnno.var1());
        int intVar2 = Integer.parseInt(myCustomAnno.var2());

        // ....
    }
}
@Value("${some.property.one}")
private propertyOne;            // This works

共有1个答案

李飞翼
2023-03-14

AFAIK,占位符在自定义批注中不解析。但是,您可以在方面本身中解决它们。

例如:

@Aspect
class MyAop implements EmbeddedValueResolverAware {

    private StringValueResolver resolver;

    @Around(value="@annotation(myCustomAnno)",argNames="myCustomAnno")
    public void play(MyCustomAnno ann) {
        System.out.println(resolver.resolveStringValue(ann.var1()));
    }

    @Override
    public void setEmbeddedValueResolver(StringValueResolver resolver) {
        this.resolver = resolver;
    }
}
 类似资料:
  • 我有以下课程: 我从控制器调用方法test(): 然而,spring并没有注入构建。版本值,即使类具有组件注释。 我在控制器中使用相同的属性,它工作正常。 我做错了什么?

  • 我们一直在使用Spring@Value注释来注入属性值。我们有一个约定来命名属性名称,以匹配它们注入的java字段。这带来了不必要的工作,即每个ConfigBean的java字段都需要用@Value注释。 我正在寻找一种方法,用新的注释注释java类(比如说ConfigBean),让一些后处理器读取这些bean的属性名称,并自动注入属性值。 我正在寻找一些关于如何在没有@Value注释的情况下实现

  • 我有我的Jhipster配置/应用程序属性。java类设置和工作,但不清楚如何将属性值注入url的假客户端注释: 使用@Value在下面不起作用: 有什么想法吗?

  • 在我的microservice Spring Boot项目中,我用@ResponseStatus注释了这个自定义异常: 它工作得很好:当引发异常时,我的控制器返回指定的状态(404),但原因没有得到解决(错误消息是“${message.custom.notFound}”)。 您知道是否有方法将属性文件中的属性注入到此注释中吗? 提前感谢

  • 我有一个Spring配置类,我正在使用它从属性文件中读取并创建bean。 在xml文件中 我能够设置和属性,但无法将属性设置为,因为我们需要注入及其。请让我知道如何在方法中注入bean。

  • 我正在使用spring boot开发REST API。我想在我的项目中使用git。在文件应用程序中。属性我有数据库Url、用户名和密码,我不想在git上推送它们。我不知道如何创建包含数据库配置的文件,以及如何将这些配置注入应用程序。属性。 应用属性