Я читал на Spring, и он продолжает рассказывать о данных конфигурации Spring, которые вам нужны, но где вы помещаете этот xml файл? и что вы его сохраняете? Кажется, я не могу найти эту информацию где угодно.
Spring Конфигурация
Ответ 1
Более важно, чем где, вопрос должен быть для вас: какие именно "данные конфигурации"?
Из docs:
контейнер Spring IoC потребляет форму метаданных конфигурации; эти метаданные конфигурации представляют, как вы, разработчик приложения, указываете контейнеру Spring создавать, настраивать и собирать объекты в своем приложении.
Метаданные конфигурации традиционно поставляются в простом и интуитивно понятном формате XML, что в большинстве случаев используется для передачи ключевых концепций и функций контейнера IoC Spring.
Однако вы также можете использовать аннотации или Java-конфигурация для предоставления метаданных конфигурации для ваших POJO.
В Spring объекты, которые составляют основу вашего приложения и управляемые контейнером IoC Spring, называются beans. A bean - это объект, который создается, собирается и иным образом управляется контейнером IoC Spring. В противном случае bean является просто одним из многих объектов вашего приложения. Beans, а зависимости между ними отражены в метаданных конфигурации, используемых контейнером.
Как уже упоминалось ранее, здесь вы можете найти, как создать экземпляр контейнера в разных сценариях.
И что это за контейнер IoC?
IoC (инверсия управления) и DI (инъекция зависимостей) - это термины, придуманные Мартин Фаулер, в отношении Spring см. первый раздел документов.
Я рекомендую вам прочитать всю ссылку, если вы хотите войти в разработку с помощью Spring.
Ответ 2
Более интересным, чем чистое имя, является то, как вы разбиваете файлы (и даете каждой части имя).
Если у вас есть автономный или веб-приложение без тестов, вы можете поместить всю конфигурацию в один файл. - Но не имея никакого теста, не должно быть мнения.
Предположим, что у вас есть веб-приложение с тестами.
Затем вы должны разделить конфигурацию в двух файлах: одну для чистой java (без конфигурации web suff) и одну, которая содержит все другие материалы для WEB-приложения.
Я лично переписываю его имя applicationContext.xml и webmvc-config.xml.
Имя по умолчанию для файла конфигурации сети (если не указано для Servlet диспетчера) будет /WEB-INF/<servletname>-servlet.xml
)
Я располагаю applicationContext.xml в каталоге classpath:/META-INF/spring
и webmvc-config.xml в WEB-INF/spring
. Это расположение - стиль Spring Roo. Он работает, но каждая другая папка тоже будет работать. Поскольку я использую maven, точное местоположение файлов:
-
/src/main/resources/META-INF/spring/applicationContext.xml
-
/src/main/webapp/WEB-INF/spring/webmvc-config.xml
Ядро applicationContext.xml загружается с помощью org.springframework.web.context.ContextLoaderListener
и webmvc-config.xml Servlet Dispatacher. web.xml
:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:META-INF/spring/applicationContext*.xml</param-value>
</context-param>
<!-- Creates the Spring Container shared by all Servlets and Filters -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>CFMA-SpringProject</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/webmvc-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
Теперь вы начинаете писать свои тесты для бизнес-логики своего приложения, не загружая все веб-материалы. Но в большинстве случаев это не так. Например, вы хотите запустить несколько быстрых тестов с помощью базы данных Inmemory при запуске обычного приложения с постоянной базой данных, такой как MySql (пожалуйста, не обвиняйте меня в этом предложении), или вы хотите использовать настроенный jndi db в процессе производства и "нормальный" настроен для тестов. Так что вам нужно две разные конфигурации. Чтобы написать не каждую вещь дважды, самый простой способ - разбить applicationContext.xml
на два файла:
-
applicationContext.xml
для основного материала без материала db, который отличается от тестов -
applicationContext-db.xml
для продуктивной конфигурации db (например, jndi-lookup для соединения db и LocalContainerEntityManagerFactoryBean для MySql)
(Теперь вы понимаете шаблон contextConfigLocation
в web.xml)
Для тестов вам нужно два файла (вы можете записать их в один файл, но я предпочитаю два).
* testContext-h2DbConfig.xml
Файл, который является тестирующим братом applicationContext-db.xml
, но с тестовой базой данных и без jndi.
* textContext.xml
Этот файл в файле, указанном @ContextConfiguration
в ваших тестовых случаях. Этот файл содержит только импорт конфигурации, необходимой для тестов. В этом случае это:
<import resource="classpath:/META-INF/spring/applicationContext.xml" />
<import resource="classpath:/META-INF/spring/testContext-h2DbConfig.xml" />
Поскольку я использую spring, оба файла находятся в /src/test/resources/META-INF/spring/testContext.xml
Если у вас есть другие аспекты вашей конфигурации Spring, где отличается тестовая и производительная конфигурация (например, планировщики), вы можете разбить ее таким же образом.
Надеюсь, вы понимаете, как работают совместное расщепление, соглашение об именах и местоположение.
Ответ 3
Хорошо, если есть "официальное" имя вообще, то я предполагаю, что он должен исходить от самих парней Spring. Инструмент Spring по выбору для создания совместимых проектов Spring - это Roo, выглядящий там, мы находим SRC_MAIN_RESOURCES/META-INF/spring/applicationContext.xml
(с SRC_MAIN_RESOURCES
местоохота для src/main/resources
в проекте Maven2).
Ответ 4
Это зависит от вашего приложения, некоторые приложения поддерживают конфигурацию Spring, в этом случае вам нужно будет проверить документацию фреймворков.
Если это автономное приложение, вы можете поместить файл в любом месте, но обычно он помещается в
src/main/resources
или подкаталог в resources
.
В разделе 3.2.2 раздела Spring docs показано, как создать экземпляр ApplicationContext
.
Ответ 5
Как указывали другие, имя конфигурационного файла Spring не очень важно. Реальный вопрос заключается в том, как загружается этот файл. В автономном приложении вы делаете это явно, используя что-то вроде класса ClassPaспасибоmlApplicationContext, как описано в этой части документации Spring.
В веб-приложении это обычно настраивается в файле web.xml, добавляя определения для прослушивателей конфигурации и, возможно, файлы конфигурации. Это настройка, которую я использую:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:appContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
Это позволяет мне поместить файл конфигурации в любом месте, если захотите, до тех пор, пока он находится на пути класса приложения. Вы даже можете указать несколько файлов конфигурации в элементе param-value, разделив их пробелами.