java - Spring 配置 - 初始化代码的最佳实践

标签 java spring

@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/

相关文章:

spring - java.io.IOException : Invalid keystore format Spring Security SAML Extension

java - 使用 Spring 与 jar 相关的文件

spring - JPA 一对一映射与继承 : 2 Queries for what should be one

java - 如何在两个输出之间添加一个空格?

Java:如何检查二维列表/数组中的 boolean 条件?

java - 从 JAR 加载资源而不访问 ClassLoader?

java - 如何一起使用@RequestBody和@RequestParam

java - Spring Security 3.1.3 问题

java - 获取对 Java 的默认 http(s) URLStreamHandler 的引用

java - 如何使用 LibGDX 生成透明的 PNG 图像?