@Bean
public Session session(){
SessionConnector connector=new SessionConnector(url,username,password,environment);
Session session= connector.getSession();
session.registerListener(listener());
return session;
}
@Bean
public Listener listener(){
return new Listener(session())
}
我有上面的代码,它最终运行一个无限循环...我怎样才能将监听器的注册分离到一个单独的方法中? (我尝试在没有注册码的情况下创建一个临时私有(private) session bean,但出于某种原因您不能拥有私有(private) bean?)
谢谢。
最佳答案
Listener
不必是 @Bean
。
您可以调用常规的 Listener
构造函数并传递 session 。
修改后的代码:
@Bean
public Session session(){
SessionConnector connector=
new SessionConnector(url,username,password,environment);
Session session= connector.getSession();
// This is modified initialization code
Listener listener = new Listener( session );
session.registerListener(listener);
return session;
}
编辑
如果您需要将监听器作为单例,那么我建议您在其初始化代码中将其注册到 session 中。
@Bean
public Session session(){
SessionConnector connector=
new SessionConnector(url,username,password,environment);
Session session= connector.getSession();
return session;
}
@Bean
public Listener listener(){
Session session = session( );
Listener listener = new Listener( session );
session.registerListener( listener );
return listener;
}
关于java - Spring 配置 - 初始化代码的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8706501/