Java 如何在方法体内进行注射?

Java 如何在方法体内进行注射?,java,Java,我有以下代码: class Foo { @Resource(lookup=url) private DataSource ds; } 但是url是动态的,将加载到方法体中: class Bar { public static void main(String[] args) { String url = xxx; DataSource ds; //How to inject the datasource using Ann

我有以下代码:

class Foo {
    @Resource(lookup=url)
    private DataSource ds;
}
但是
url
是动态的,将加载到方法体中:

class Bar {
    public static void main(String[] args) {
        String url = xxx;
        DataSource ds;
        //How to inject the datasource using Annotation?
    }
}

我知道如何使用上下文查找。我想知道是否有任何带注释的注入方法。

简而言之,您不能。执行注入的代码无法查找方法的局部变量。另一方面,可以使用核心JavaAPI中可用的类检查方法访问类字段


此外,注释参数只能是常量表达式

您可以为此使用服务定位器。它支持在方法内部注入局部变量。

您可以注入一个确定动态URL的查找/工厂bean吗?我认为这是不可能的,因为注释没有意义,为什么需要这样做?创建一个工厂类,并通过简单的方法调用随时获取ds。