Мы используем пружину для создания / внедрения наших Java-бинов.Вот фрагмент:
<bean id="myAppConfigs" class="my.cool.webapp.ApplicationConfig" scope="singleton">
<constructor-arg value="8080" />
<constructor-arg value="MyAppName1" />
</bean>
Мы используем шаблон синглтона в
public static ApplicationConfig getCurrentInstance(ServletContext sctx) {
if (instance == null) {
WebApplicationContext wac = null;
if (sctx != null) {
wac = WebApplicationContextUtils.getWebApplicationContext(sctx);
}
return (ApplicationConfig) wac.getBean("myAppConfigs");
Поскольку бин читает только некоторые свойства, которые всегда одинаковы, я сомневаюсь, что могут быть проблемы.Но мне по-прежнему любопытно, как реализовать хороший потокобезопасный способ. Конечно, существует блокировка с двойной проверкой с использованием volatile , которая является поточно-ориентированной.Но есть ли другой способ, возможно, использовать идиому Инициализация по требованию вместе с аргументами функции / конструктора?