无法从其他spring项目中导入的spring项目jar访问实例

时间:2013-07-25 03:46:26

标签: java spring spring-mvc

我创造了一个非常棒的弹簧项目。我把这个罐子导入了另一个弹簧项目。现在,我想访问一些在spring jar中创建的实例。例如,下面的类来自内部弹簧项目。我想获取AuthenticationClient的实例。我编程的方式是创建一个静态getter方法,它将返回实例的引用。对于要在静态引用中设置的实例,我必须在监听器中自动装配它。

因为,我已经在另一个Spring项目中导入了jar,我发现最终没有调用监听器,导致所有事件链失败。下面是外部Spring项目的控制器,我正在尝试访问AuthenticationClient的实例

public class AuthenticationClient {

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

public static AuthenticationClient getAuthenticationClient(){
    return client;
}

public @Resource(name="authenticationClient") void setAuthenticationClient(AuthenticationClient client){
    AuthenticationClient.client = client;
}

监听

public class ApplicationListenerBean implements ApplicationListener<ContextRefreshedEvent>` {

private @Autowired AuthenticationClient client;

@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
    ApplicationContext applicationContext = event.getApplicationContext();
    System.out.println();
    // now you can do applicationContext.getBean(...)
    // ...
}

}

控制器

@Controller

public class HomeController {

private  AuthenticationClient client;

/**
 * Simply selects the home view to render by returning its name.
 */
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Locale locale, Model model) {
    client = AuthenticationClient.getAuthenticationClient();

    return "home";
}

}

1 个答案:

答案 0 :(得分:0)

供其他正在寻找答案的用户参考。我们可以将jar的上下文文件导入到当前项目中。确保jar在类路径中。然后,您导入像这样的上下文

<beans:import resource="classpath:/src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml"/>