Spring:自动装配静态自引用不起作用

时间:2013-07-24 15:37:56

标签: java spring spring-mvc

我正在开发的项目是一个在春天创建的框架,它将被打包为jar,以便在其他项目中使用。

现在,我正在尝试自动装配静态自引用字段。我已经为AuthenticationClient创建了一个bean,但仍然抱怨无法找到符合条件的bean来自动装配。我理解布线静电场不是一个好选择。但我没有其他选择。

public class AuthenticationClient {

    private static AuthenticationClient client;
    private @Autowired KerberosAPI kerberosAPI;
    private @Autowired KerberosSessionManager kerberosSessionManager;


    public AuthenticationClient getAuthenticationClient(){
        return client;
    }

    @Autowired
    public void setAuthenticationClient(AuthenticationClient client){
        AuthenticationClient.client = client;
    }
}

Servlet-Context:我已经在servlet-context中声明了我的bean,就像这个

一样
    <beans:bean class="com.security.kerberos.KerberosAPIImpl" />
    <beans:bean class="com.security.kerberos.model.KerberosSessionManager"/>    
    <beans:bean class="com.security.rest.client.AuthenticationClient" />

此处有详细例外:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.security.rest.client.AuthenticationClient] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}

更新:

正如我告诉你的那样,该项目将打包为jar。现在,我想在项目的控制器中获取AuthenticationClient的实例,其中jar必须被导入。父项目可能不是一个spring项目,因此,我需要有一种方法来获取AuthenticationClient的实例,而无需自动装配它。我之所以要继续这条路线。如果需要更多信息,请告诉我。

@Controller

public class Test {

@RequestMapping(value="/test")
public void test(){
    AuthenticationClient client = AuthenticationClient.getAuthenticationClient();
}

}

1 个答案:

答案 0 :(得分:1)

尝试使用@Resource注释。

@Autowired在寻找候选人时会跳过带注释的bean。

请参阅How to autowire bean in same bean