Вопрос по java, spring, frameworks, configuration – Об использовании файла конфигурации Beans.xml в приложении Spring Framework

7

Я учусь Spring MVC. Сегодня, пытаясь понять, как реализовать JDBC DAO, я нашел это "Привет, мир" весной (Spring, а не Spring MVC), и я начинаю это видеть (потому что я думаю, что для реализации DAO мне нужно создать отдельный Spring Project, который выполняет доступ к данным ...)

http://www.tutorialspoint.com/spring/spring_hello_world_example.htm

Хорошо, это отдельное приложение, и это не веб-приложение, поэтому оно неиметь структуру веб-приложения (папка WEB-INF, файл web.xml и файл конфигурации сервлета диспетчера, который есть в моем веб-приложении)

В этом примере у меня естьbeans.xml файл конфигурации, который используется для назначения уникальных идентификаторов различным bean-компонентам и для управления созданием объектов с разными значениями, не затрагивая ни один из исходных файлов Spring ...

Например, в этом примере я используюbeans.xml файл для передачи "Привет, мир" значение сообщения для "сообщение" переменная, и поэтому я могу напечатать это значение без влиянияHelloWorld.java а такжеMainApp.java файлы





   
       
   


Итак, у меня есть к вам несколько вопросов:

Является ли этот файл файлом, который настраивает мойБобовая Фабрика? Я думаю, что наряду с передачей текстового значения в качестве значения переменной я мог бы также внедрить компонент в качестве зависимости от другого компонента.

Это правильно?

В этом примере я могут использоватьbeans.xml файл и использование вместо системы аннотаций?

Ваш Ответ

2   ответа
16

1) этоbeans.xml (на самом деле вы можете назвать его как угодно)Конфигурационный файл Spring, Он держитметаданные конфигурации.

Из официальной весенней документации:

5.2.1 Конфигурационные метаданные

Как показывает предыдущая диаграмма, контейнер Spring IoC использует форму метаданных конфигурации; Эти метаданные конфигурации показывают, как вы, как разработчик приложения, указываете контейнеру Spring создавать экземпляры, настраивать и собирать объекты в вашем приложении.

Метаданные конфигурации традиционно предоставляются в простом и интуитивно понятном формате XML,но это не единственная разрешенная форма метаданных конфигурации (см. ответ на ваш второй вопрос)

И да, вы правы: вы можете ввести другой компонент в качестве ссылки.

Из официальной весенней документации:

5.3 Обзор бина

Контейнер Spring IoC управляет одним или несколькими компонентами. Эти компоненты создаются с помощью метаданных конфигурации, которые вы предоставляете контейнеру, например, в форме определений XML.

Внутри самого контейнера эти определения bean-компонентов представлены в виде объектов BeanDefinition, которые содержат (среди прочего) следующие метаданные:

Имя класса с указанием пакета: обычно это фактический класс реализации определяемого компонента.

Элементы поведенческой конфигурации бина, которые определяют, как бин должен вести себя в контейнере (область действия, обратные вызовы жизненного цикла и т. Д.).

Ссылки на другие бобы которые необходимы для того, чтобы бин выполнял свою работу; эти ссылки также называютсясотрудники или жезависимостей.

Другие параметры конфигурации для установки во вновь созданном объекте, например, количество соединений, используемых в бине, который управляет пулом соединений, или ограничение размера пула.



Простой пример использования ссылок на другие компоненты из официальной документации:

<!--?xml version="1.0" encoding="UTF-8"?-->
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="exampleBean" class="examples.ExampleBean">
        <!-- setter injection using the nested <ref/> element -->
        <property name="beanOne">
            <ref bean="anotherExampleBean">
        </ref></property>

        <!-- setter injection using the neater 'ref' attribute -->
        <property name="beanTwo" ref="yetAnotherBean">
        <property name="integerProperty" value="1">
    </property></property></bean>

    <bean id="anotherExampleBean" class="examples.AnotherBean">
    <bean id="yetAnotherBean" class="examples.YetAnotherBean">

</bean></bean></beans>

2) Из официальной весенней документации:

5.2.1 Конфигурационные метаданные

...

Метаданные на основе XML - не единственная разрешенная форма метаданных конфигурации, Сам контейнер Spring IoC полностью отделен от формата, в котором эти метаданные конфигурации фактически записаны.

Для получения информации об использовании других форм метаданных с контейнером Spring см .:

Конфигурация на основе аннотацийВ Spring 2.5 появилась поддержка метаданных конфигурации на основе аннотаций.

Конфигурация на основе JavaНачиная с Spring 3.0, многие функции, предоставляемые проектом Spring JavaConfig, стали частью ядра Spring Framework. Таким образом, вы можете определять bean-компоненты, внешние по отношению к вашим классам приложений, используя Java, а не файлы XML. Чтобы использовать эти новые функции, см.,@Configuration@Bean@Import а также@DependsOn аннотаций.

Также прочитайте это:

Spring без XML: Основы аннотаций Spring и XML-файлы Spring

@DonalFellows +1 за дополнительную разработку. informatik01
@AndreaNobili Добро пожаловать! informatik01
Большое вам спасибо, ребята, теперь это очень ясно для меня AndreaNobili
Чтобы уточнить ваш ответ по части 2, я думаю, вы можете получить около 95% содержимого конфигурации XML в Java. Главноеобязательно отсутствует описание того, какие пакеты проверять при поиске аннотаций / config-beans. (Ну, если выВы большой поклонник начальной загрузки Spring полностью вручную.) Donal Fellows
2

/src/main/resources/ и поместил этоbeans.xml файл там:

<!--?xml version="1.0" encoding="UTF-8"?-->
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="http://www.springframework.org/schema/beans
 http://www.springframework.org/schema/beans/spring-beans-4.3.xsd">

 <bean id="employee" class="HelloSpring.Employee">
 <property name="name" value="test spring"></property>
 </bean>
</beans>

Это сработало!

Я получил к нему доступ так:

package HelloSpring;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Customer {

    public static void main(String[] args) {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("./beans.xml");

        Employee obj = (Employee) ctx.getBean("employee");
        obj.displayName();
    }
}

Похожие вопросы