我正在开发的项目是一个在春天创建的框架,它将被打包为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();
}
}
答案 0 :(得分:1)