Весна-это легкая инверсия управления (МОК) и тангенс-ориентированная (AOP) контейнерная структура. Как получить настройку Spring Beans в программе?
Фабрика Bean (com.springframework.beans.factory.beanfactory) является основным интерфейсом Spring Framework. Он обеспечивает расширенный механизм конфигурации МОК. BeanFactory позволяет управлять различными типами объектов Java. Контекст приложения (com.springframework.context.applicationContext) основан на BeanFactory и обеспечивает более ориентированные на приложения функции. Он предоставляет международную систему поддержки и фреймворчатых событий, что облегчает создание практических приложений. Как правило, мы называем BeanFactory контейнером IOC и приложением Context в контексте приложения. Но иногда ради написания удобства мы также называем пружинный контейнер ApplicationContext.
Для целей двух мы можем просто разделить их: Beanfactory - это инфраструктура пружинной структуры, направленной на саму пружину; ApplicationContext предназначен для разработчиков, которые используют Spring Framework. Почти во всех случаях приложения мы напрямую используем ApplicationContext вместо базового BeanFactory.
Существует значительная разница между инициализацией ApplicationContext и BeanFactory: когда BeanFactory инициализирует контейнер, он не создает экземпляры бобов до тех пор, пока целевой фасоль не будет доступен в первый раз; В то время как ApplicationContext создает все бобы с одним экземпляром при инициализации контекста приложения. Следовательно, время инициализации ApplicationContext будет немного длиннее, чем у BeanFactory
Эта статья не включает в себя автоматическую инъекцию через @Resource и @Autowired и получает только бобы в файле конфигурации пружины через ApplicationContext.
Чтобы настроить бон в XML, самое важное - получить org.springframework.context.applicationContext
Первый метод получения ApplicationContext:
Import org.springframework.context.applicationContext; import org.springframework.context.support.filesystemxmlapplicationContext; ApplicationContext ApplicationContext = new FilesyStemxmlApplicationContext ("applicateContext.xml");или
import org.springframework.context.applicationContext; import org.springframework.context.support.classpathxmlapplicationContext; private ApplicationContext ApplicationContext = new ClassPathxMlApplicationContext ("applicateContext.xml");Тяжелая инстанция приложения для такого пути является очень трудоемким. Этот способ подходит для автономных приложений, используя Spring Framework. Рекомендуется использовать только тогда, когда программа должна вручную инициализацию пружины через файлы конфигурации. Основными классами реализации ApplicationContext являются ClassPathXmlapplicationContext и FileSystemxmlapplicationContext. Первые загружают файлы конфигурации с ClassPath по умолчанию, а последний загружает файлы конфигурации из файловой системы по умолчанию.
пример:
открытый класс BeanManager {private Static ApplicationContext Context = new ClassPathxMlapplicationContext ("appcontext.xml"); public Static Object getBean (String beanid) {return context.getbean (beanid);}}Напишите сервис в web.xml, автоматически запустите и вызовите Beanmanager в методе init
init () Throws ServletException {BeanManager BM = New BeanManager (); // Необязательно, так что пружина загружает конфигурацию бобов при запуске веб -приложения. // В противном случае это будет загружено, когда BeanManager вызывает в первый раз, затрагивая скорость один раз. }Использовать beanmanager.getbean (String Beanid); В коде Java для получения экземпляра Bean.
Второй метод получения ApplicationContext: Получить объект ApplicationContext через класс инструментов, предоставленный Spring. Это метод, специально настроенный для веб -проектов. Рекомендуется использовать его в веб -проектах. Например:
ServletContext servletContext = request.getSession (). GetServletContext (); ApplicationContext AC1 = WebApplicationContextUtils .GetRequireDWebApplicationContext (ServletContext SC) ApplicationContext AC2 = webApplicationContextutls .getWebPplicationContext (ServletContext sc) ac1.getbean ("beanIdbean);Получить объект экземпляра ApplicationContext через javax.servlet.servletcontext, что означает, что запрос, сеанс и т. Д. Должны использоваться.
Таким образом, объект ApplicationContext не может быть установлен как переменная -член. В каждом конкретном методе вам необходимо получить сервисконтекст через запрос, сеанс и т. Д., А затем получить экземпляр ApplicationContext.
Поэтому этот метод рекомендуется только в случае, когда вы можете получить объект ServletContext, и вам не нужно определять объект ApplicationContext как переменную члена.
Примечание. При использовании WebApplicationContextUtils для получения экземпляра ApplicationContext вам необходимо добавить org.springframework.web.context.contextloaderListener прослушивателя в файл конфигурации web.xml, в противном случае объект ApplicationContext не может быть получен и нулевой возврат.
Файл конфигурации: web.xml
<!-ContextLoaderListener автоматически вводит ApplicationContext и получает-> <!-Место загрузки на конфигурации пружины-> <context-param> <param-name> contextconfiglocation </par am-name> <param-value> /web-inf/spring/appcontext.xml,/web-inf/spring/appinterceptor.xml </param-value> </context-param> <lidloer> <lisherer-class> org.springframework.web.context.contextulderlister </sliewer-class>
3. Унаследован от абстрактного класса ApplicationObjectSopport
Абстрактный класс ApplicationObjectSupport предоставляет метод getApplicationContext (), который может легко получить ApplicationContext. Когда пружина инициализируется, объект ApplicationContext будет вводится с помощью метода SetApplicationContext (ApplicationContext Context) абстрактного класса.
4. Унаследован от абстрактного класса WebPplicationObjectSopport
Используйте getWebApplicationContext (), чтобы получить org.springframework.web.context.webapplicationContext, потому что веб -приложения имеют больше функций, чем обычные приложения, WebApplicationContext Extlends ApplicationContext. WebApplicationContext определяет постоянный root_web_application_ context_attribute. Когда контекст запускается, экземпляр WebApplicationContext помещается в список атрибутов ServletContext с этим ключом. Поэтому мы можем напрямую получить WebApplicationContext из веб -контейнера через следующее оператор:
Webapplicationcontext wac = (webapplication context) servletcontext.getattribute (webapplicationcontext.root_web_application_context_attribute);
5. Реализация интерфейса ApplicationContextaware
Реализуйте метод SetApplicationContext (Context ApplicationContext) этого интерфейса и сохраните объект ApplicationContext. Когда пружина инициализируется, объект ApplicationContext вводится через этот метод.
Третий, четвертый и пятый методы требуют настройки класса в файле конфигурации пружины:
<!-Предполагая, что ApplicationContextTool-это конкретный класс реализации, который наследует или реализует третий, четвертый и пятый методы-> <Bean> </bean>
В противном случае, ApplicationContext не будет извлечен, а null будет возвращен.
Приведенный выше контент представляет собой краткое изложение метода весенних бобов в Java, я надеюсь, что вам понравится.