В весенней справочной документации

В разделе 2.3 «Сценарии использования» есть параграф, который выглядит следующим образом:

Иногда обстоятельства не позволяют полностью перейти на другую среду. Весна Framework делает не заставить вас использовать все, что в нем; это не все или ничего решение. Существующий внешние интерфейсы, созданные с помощью Struts, Tapestry, JSF или других сред пользовательского интерфейса, могут быть интегрированы с Spring- на основе среднего уровня, который позволяет использовать функции транзакций Spring. Вам просто нужно подключить бизнес-логика с использованием ApplicationContext и использовать WebApplicationContext интегрировать ваш веб-слой.

Теперь я не могу понять последнее предложение. Как мы можем подключить нашу бизнес-логику с помощью ApplicationContext и использовать WebApplicationContext для интеграции с веб-уровнем. Как мы можем достичь этого? И содержит ли веб-слой, о котором они говорят, контроллеры и jsps?

Насколько я помню, если нам нужен какой-либо объект в классе, мы просто соединяем его автоматически, а Spring выполняет остальную часть работы.

Может кто-нибудь, пожалуйста, предоставьте объяснение с примерами. Пожалуйста, прости мое невежество, потому что я только начал изучать весну.

Если кто-то задает аналогичный вопрос, может ли кто-нибудь указать мне правильное направление?

0
Aditya Cherla 28 Май 2017 в 14:01

2 ответа

Лучший ответ

Возможно, даже вы можете создать более одного другого контекста иерархически.

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

< Сильный > 1 ) Non - иерархический

Создайте два разных context.xml, предположим, что context1.xml и context2.xml. context1.xml должен быть таким:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns=..... some imports >

<context:annotation-config />
<context:component-scan base-package="desiredPackage1" />

<bean id="properties"
      class="org.springframework.beans.factory.config.PropertiesFactoryBean">
    <property name="locations">
        <list>
            <value>db.properties</value>
        </list>
    </property>
</bean>

<context:property-placeholder properties-ref="properties"/>

Только для context2.xml

<context:component-scan base-package="desiredPackage2" /> 

Затем создайте класс Configuration.java следующим образом:

public class Config {

    public static void main(String[] args) throws Exception {

        ApplicationContext desiredContext1 = new ClassPathXmlApplicationContext("file:////...path.../context1.xml");

        ApplicationContext desiredContext2 = new ClassPathXmlApplicationContext("file:////...path.../context2.xml");
    }
}

Теперь у вас есть два разных контекста, если вы хотите иерархически, измените метод main следующим образом: < Сильный > 2 ) Иерархическая

public class Config {

    public static void main(String[] args) throws Exception {

        ApplicationContext desiredContext1 = new ClassPathXmlApplicationContext("file:////...path.../context1.xml");
        String[] congigPath = new String[1];
        congigPath[0] = "file:////...path.../context2.xml";
        ApplicationContext desiredContext2 = new ClassPathXmlApplicationContext(congigPath,desiredContext1);
    }
}

В этом случае объект требуемыйКонтекст2 может видеть объект требуемыйКонтекст1, но объект желаемого объектаТекст1 не может видеть объект требуемыйКонтекст2.

Если вы хотите использовать его при создании веб-приложения, используйте аннотации с вашим классом конфигурации,

@Configuration
@ImportResource("context1.xml", "context2.xml")
public class Config { ....

Я надеюсь, что это поможет вам.

1
Gökhan Polat 28 Май 2017 в 11:59

Вы можете настроить два или даже три разных проекта или модуля, каждый из которых имеет собственный контекст. Например, веб-проект с WebApplicationContext, который отображает представления и вызывает бизнес-методы, то есть использует спокойные веб-сервисы бизнес-уровня. И настроить отдельный проект или модуль для управления бизнесом, который имеет свой собственный файл контекста и bean-компоненты. И даже общий проект по включению общих бинов между сетью и бизнес-уровнем.

1
hkazemi 28 Май 2017 в 11:19