Внедрить зависимость в application.cfc FW1
У меня есть тестовое приложение в FW1. В настоящее время у меня тестовый сервис и DAO. Например Model/services/test.cfc и Model/DAO/testDAO. Здесь я хочу установить одно из данных на application.cfc. Как я могу внедрить некоторые сервисы / DAO в приложение cfc. Я попытался сделать это, следуя Создание службы FW/1 в application.cfc. Но всегда сталкиваюсь с проблемой ниже.
Я хочу вызвать мои services / test.cfc или DAO / testDAO в моем файле cfc приложения. Дайте представление об этом и спасибо заранее!
2 ответа
Не видя ваш код, здесь есть несколько вещей, которые кажутся неправильными...
- Как сказал Бернхард, вам нужно объявить свойства непосредственно внутри блока компонента.
- Убедитесь, что в декларации вашего компонента вы включаете
accessors="true"
приписывать. - Убедитесь, что вы ссылаетесь на свой сервис в зависимости от того, как настроен DI/1. Я вижу тебя у тебя
test.cfc
вservices
папка. Я предполагаю для вас, чтобы ссылаться на имущество какtestServices
Вы устанавливаете DI/1, чтобы отобразить это таким образом. В противном случае, по соглашению, он будет доступен какtest
или жеtestService
, См.: Основные соглашения DI/1 - Я не смог найти источник, подтверждающий это, но я на 99% уверен, что вы не сможете получить доступ к своему сервису /DAO из
setupApplication()
, Это своего рода подход курица / яйцо.
Вы можете сделать этот вызов в одном из других методов жизненного цикла, таких как before()
или же setupRequest()
, Однако, в зависимости от вашего варианта использования, я бы переосмыслил ваш подход. Как Джеймс упоминает в своем ответе, это не обычный порядок действий. Если вам нужны данные, доступные по каждому запросу, или доступ к вспомогательному методу для регулярной обработки, я могу убедиться, что это работает для вас. Кроме того, если вам действительно не нужен этот сервис каждый раз, лучше выделить его только для контроллеров, которым он требуется в вашем приложении. В конечном счете, трудно сказать, не зная вашего намерения.
В FW/1 сервисы идут в каждый контроллер, а не в application.cfc
, Вы должны переместить их туда.