当前位置: 首页 > 面试题库 >

如何使用Spring在抽象类中注入静态方法的局部变量?

潘修为
2023-03-14
问题内容

我是Spring的新手,遇到了这个问题。我尝试在该方法上使用@Autowired,但没有成功,在变量上,我从Eclipse中收到错误消息“该位置不允许使用@Autowired注解”。我在xml中创建了所需的bean。

下面是代码,此方法在抽象类内。

private static HttpResponse rawExecuteReqeust(HttpUriRequest request) throws ClientProtocolException, IOException {
    HttpClient client = new DefaultHttpClient();
    ProxyInterface proxyI; // needs to be Injected
    User user; // needs to be Injected
    System.out.println("About to execute " + request.getMethod() + " request on        " 
        + request.getURI());
    if (proxyI.getProxyHost() != null && proxyI.getProxyPort() != 0) {
        if (user.getProxyUser() != null && user.getProxyPassword() != null) {
            ((AbstractHttpClient) client).getCredentialsProvider().setCredentials(
                    new AuthScope(proxyI.getProxyHost(), proxyI.getProxyPort()),
                    new UsernamePasswordCredentials(user.getProxyUser(), user.getProxyPassword()));
        }
        HttpHost proxy = new HttpHost(proxyI.getProxyHost(), proxyI.getProxyPort(), "http");
        client.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
    }
    HttpResponse response = client.execute(request);
    return response;
}

(ps我是stackOverflow的新手,希望我正确格式化了问题:))


问题答案:

如果有可能可以让你把userproxyI成静态属性可以通过利用注入他们的MethodInvokingFactoryBean。您将必须提供一个静态的setter方法。让您对配置有所了解:

<bean name="staticHubInitializer" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
        <property name="staticMethod" value="your.AbstractUtilClass.setStaticDependencies"/>
        <property name="arguments">
            <list>
                <ref bean="user"/>
                <ref bean="proxyI"/>
            </list>
       </property>
    </bean>


 类似资料:
  • 我是Guice注入的新手。如何将类注入到将在静态方法中使用的静态变量中? 这是我想在 doLocalize() 方法中使用注入的变量 b 的类。 这是我想要对其执行guice注入的模块类。 注意:我不能改变我的模块和B类,因为它来自另一个依赖项。 我想在我的A类中注入的类

  • 如何以编程方式将Java CDI 1.1托管bean注入静态方法中的局部变量?

  • 本文向大家介绍spring 如何将配置信息注入静态变量的方法,包括了spring 如何将配置信息注入静态变量的方法的使用技巧和注意事项,需要的朋友参考一下 我们学习过将配置信息,通过@Value()的方法注入到对象的变量。这是由于对象是由spring来托管的。那么非spring如果,我们需要在静态方法中,使用配置文件中的值,又该怎么做呢? 传统的错误作法 application.propertie

  • 问题内容: 我正在使用spring的PreAuthorize注释,如下所示: 但是,我已经在另一个类上将“角色”定义为静态字符串。如果我尝试使用此值: 我收到一个错误: 有没有办法使用PreAuthorize批注访问此类静态变量? 问题答案: 尝试以下使用Spring Expression Language评估类型的方法: 确保指定完全限定的类名。 文献资料

  • 问题内容: 如何以静态方法以编程方式将Java CDI 1.1+托管bean注入局部变量? 问题答案: 要注入class的实例: 在CDI 1.1+中可用

  • 问题内容: 我有六个类,它们都扩展了相同的抽象类。抽象类具有一个静态变量,该静态变量指向一些JNI代码,我只希望在每个类实例化时加载一次。 据我了解,这将导致实例化此静态变量的一个实例,但是我想要的是每个扩展类都具有自己的变量静态实例,该实例对于给定的子类是唯一的。我想在我的抽象类中编写一些代码来修改和/或释放该抽象类。是否可以同时执行这两项操作? 例如,我可以编写一个抽象类栏,其中包含变量foo