Весенний контейнер родительского ребенка
Общий контекст контекста весны можно разделить на отца и сына, родительский контейнер и детский контейнер. ** Родительский контейнер виден в детском контейнере, а дочерний контейнер не виден в родительском контейнере **.
Для традиционного пружинного MVC контейнер Spring MVC представляет собой детский контейнер, то есть контейнер, соответствующий ServletDispatcher, является дочерним контейнером, а конфигурация в web.xml является родительским контейнером через свойство контекста -конфиглокации ConextLoaderListener.
Используйте сценарии контейнеров отца и сына
Основной целью контейнера отца-сына является изоляция контекста. Рассмотрим один из следующих сценариев.
Project-API необходимо украсить некоторые методы в области обслуживания проектов и украсить их, такие как украшение Customer Service. Украшенный класс - это CachedCustomerService. Таким образом, теперь Project-API содержит два клиента, один из них-это Customer Service от Service Project, а другой-CachedCustomerservice. В настоящее время, если все файлы конфигурации проекта Project-API загружаются через контекст, проблемы неизбежно возникнут (обычная практика состоит в том, чтобы использовать тег импорта для импорта их всех). Поскольку зарплата в проекте вводится в Customerervice через стандарт @Resource, аналогичный следующему
@Serivcepublic class payservice {@resourceprivate customerservice cusservice;}Решение
В настоящее время, поскольку контекст внедряет свойство Customerervice, встречаются два таможни. Он не может интерпретировать, какая услуга вводит.
Конечно, некоторые люди скажут, изменяют ресурсную собственность Payservice и указывают, какой из них вводит. Однако, если Project-service.jar является сторонней библиотекой, изменение кода становится невозможным, если исходный код не получен.
В настоящее время эта проблема может быть решена через контейнер с родителями и сыном.
Поместите обслуживание проекта в родительский контейнер, и все бобы Project-API загружаются в детские контейнеры.
Предполагая, что файл контекстной конфигурации Project-API является Project-API.xml, метод реализации выглядит следующим образом.
1. Определите Project-total.xml
<bean id = "serviceContext"> <stronguctor-arg> <dulch> classpath: project-service.xml </value> </constructor-arg> </bean> <bean id = "apicontext"> <constructor-arg> <value> classpath: project-api.xml </value> </constructor-Ar> <vintuctor> <presturet> <propreg> <contureg> bean = "serviceContext"/> </constructor-arg> </bean>
2. В контексте конфигурации web.xml следует следующее.
<context-param> <param-name> contextConfiglocation </param-name> <param-value> classpath*: project-total.xml </param-value> </context-param> <lidloer> <lisherer-class> org.springframework.web.util.log4jconfiglistener </levener-class> </reallyer> <lloader-class> org.springframework.web.context.contextloaderListener </udigher-class> </sluster>
ServiceContext - это родительский контейнер, а Apicontext - это детский контейнер, так что ServiceContext не может видеть Apicontext, а Apicontext может видеть эффект ServiceContext.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.