我正在尝试对我的webapp进行一次初始化。我需要ApplicationListener类的单例,所以我将范围设置为Singleton,但它创建了多个实例。此BootStrapper未在任何其他xml配置文件中定义。 我知道默认范围是单例,但必须添加@Scope(“singleton”),因为它不是单例。即使使用此注释,它仍会创建多个实例。 这是我的ApplicationListener。
@Component
@Scope("singleton")
public class BootStrapper implements ApplicationListener<ContextRefreshedEvent> {
我错过了什么吗?
答案 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);
}
}
}