私は優れた春のプロジェクトの瓶を作成しました。この jar を別の春のプロジェクトにインポートしました。ここで、Spring jar で作成されたインスタンスのいくつかにアクセスしたいと思います。たとえば、以下のクラスはインナー スプリング プロジェクトのものです。AuthenticationClient のインスタンスを取得したい。私がプログラムした方法は、インスタンスの参照を返す静的ゲッター メソッドを作成することでした。インスタンスを静的参照に設定するには、リスナーで自動配線する必要がありました。
別のSpringプロジェクト内にjarをインポートして以来、リスナーが最終的に呼び出されず、すべてのイベントチェーンが失敗することがわかりました。以下は、AuthenticationClient のインスタンスにアクセスしようとしている外側の Spring プロジェクトのコントローラーです。
豆
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";
}
}