Подтвердить что ты не робот

Spring Конфигурация

Я читал на Spring, и он продолжает рассказывать о данных конфигурации Spring, которые вам нужны, но где вы помещаете этот xml файл? и что вы его сохраняете? Кажется, я не могу найти эту информацию где угодно.

4b9b3361

Ответ 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.xmlSRC_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, разделив их пробелами.