@Component @Scope(“singleton”)公共类BootStrapper实现ApplicationListener <contextstartedevent> {</contextstartedevent>

时间:2013-03-07 12:15:44

标签: spring web-applications

我正在尝试对我的webapp进行一次初始化。我需要ApplicationListener类的单例,所以我将范围设置为Singleton,但它创建了多个实例。此BootStrapper未在任何其他xml配置文件中定义。 我知道默认范围是单例,但必须添加@Scope(“singleton”),因为它不是单例。即使使用此注释,它仍会创建多个实例。 这是我的ApplicationListener。

@Component
@Scope("singleton")
public class BootStrapper implements ApplicationListener<ContextRefreshedEvent> {

我错过了什么吗?

2 个答案:

答案 0 :(得分:5)

要在初始化bean之后调用一个回调,请使用@PostConstruct

@Component
public class BootStrapper() {

     @PostConstruct
     public void doSomething() {
          System.out.println("I am initalized!");
     }
}

答案 1 :(得分:0)

试试这样:

@Configuration
public class TestService
{
  private Properties properties;

  @Bean
  @Scope(value = ConfigurableBeanFactory.SCOPE_SINGLETON)
  public Properties getAppProperties()
  {
    try
    {
        if (properties == null)
        {
          properties = ServiceUtils.loadProperties();
        }
     return properties;
    }
    catch (Exception e)
    {
      LOGGER.logCaughtException("Exception Occured while loading App Properties.", e);
    }
  }
}