Предположим, что я использую реализацию ApplicationContext весной.Как я могу реализовать существующую реализацию класса Java/интерфейса singleton?
ApplicationContext - это интерфейс в Java Spring Framework, и я не могу его изменить.
Как я могу гарантировать, что может быть только один экземпляр этой реализации?
Для примера. У меня есть следующий код -
public class ApplicationContextSingleton
{
private static ApplicationContext context;
private static int numberOfInstances = 0;
public static ApplicationContext getApplicationContext()
{
if(numberOfInstances == 0)
{
context = new ClassPathXmlApplicationContext("spring.xml");
numberOfInstances++;
}
return context;
}
}
Таким образом, я могу гарантировать, что есть только один экземпляр ApplicationContext, при условии, что получается следующим образом -
ApplicationContext context = ApplicationContextSingleton.getApplicationContext();
Но это не мешает другой программист от говорящего -
ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml");
тем самым создавая новый ApplicationContext. Как предотвратить это?
Воспитывая разработчиков? Если они используют Spring, они должны знать, по крайней мере, в основном, как работает Spring, и они не должны пытаться создать новый контекст. Если вы не доверяете своим разработчикам, как вы планируете запрещать бесконечные циклы? –
Непонятно мне, что вы на самом деле просите - сделать этот класс одноэлементным не имеет ничего общего с тем, чтобы кто-либо снова не загружал конфигурацию контекста. –
@JBNizet lol, это единственное решение, я полагаю! – CodeBlue