Свойства уровня компонента в приложении.cfc

#coldfusion #application.cfc

#coldfusion #application.cfc

Вопрос:

Если у меня есть свойства на уровне компонентов в моем application.cfc, будут ли они оцениваться каждый раз, когда создается страница, или они будут оцениваться только при создании приложения?

 <cfcomponent>
    <cfscript>
        this.name = "WARM2_Demo";
        this.applicationTimeout = CreateTimeSpan(1,0,0,0);
        this.setClientCookies = true;
        this.setDomainCookies = false;
        this.sessionManagement = true;
        this.sessionTimeout = CreateTimeSpan(0,0,30,0);
        this.clientManagement = false;
        this.scriptProtect = true;

        this.appDirectory = getDirectoryFromPath(getCurrentTemplatePath());
        this.fileSeparator = createObject("java","java.lang.System").getProperty("file.separator");

         ....

    </cfscript>

    <cffunction name="OnApplicationStart" returntype="boolean">
        <cfscript>
            setupApplication();
            return true;
        </cfscript>
    </cffunction>

        ....

</cfcomponent>
  

Ответ №1:

Псевдоконструктор Application.cfc выполняется при каждом запросе.

По сути, за кулисами экземпляр Application.cfc создается при каждом запросе, и этот экземпляр ведет себя точно так же, как и любой другой экземпляр CFC: выполняется бит псевдоконструктора — материал внутри тегов CFCOMPONENT, но без каких-либо объявлений CFFUNCTION / function .

После запуска псевдоконструктора выполняются любые подходящие методы обработки событий / перехватчика, например: onRequestStart() .

ПРИМЕЧАНИЕ: вы могли бы очень легко проверить это самостоятельно, просто введя что-то там. Он будет отображаться на экране при каждом запросе (сделайте его вызовом GetTickCount() или CreateUUID(), чтобы вы могли видеть его изменение).

Комментарии:

1. Я продолжаю видеть «NB:» повсюду. Что это означает?

2. @Adam: «NB:» означает «Nota bene» (латинский) или «Notez bien» (французский) и означает «Пожалуйста, обратите внимание:»

Ответ №2:

я думаю, оценивается каждый раз, когда запрашивается страница.

вставьте их в Application область видимости в onApplicationStart()

но, честно говоря, fileSeparator?? Просто используйте / , он будет работать на ОС Windows и * nix просто отлично. 🙂

Комментарии:

1. Разделитель файлов гарантированно будет работать до тех пор, пока JVM поддерживает его. Я знаю, что это маловероятно, но вы просто никогда не знаете, не будет ли какая-либо версия Windows или другой ОС, на которой это приложение может работать в будущем, поддерживать его.