Весенние общие вопросы интервью

Spring

Весенние общие вопросы интервью

:notebook: Эта статья была заархивирована в: "blog"

1. Общие вопросы

1.1 Каковы основные особенности различных версий Spring Framework?

Version Feature
Spring 2.5 Опубликовано в 2007 году. Это первая версия, поддерживающая аннотации.
Spring 3.0 Опубликовано в 2009 году. Он в полной мере использует улучшения Java5 и обеспечивает поддержку JEE6.
Spring 4.0 Опубликовано в 2013 году. Это первая версия, полностью поддерживающая JAVA8.

1.2 Что такое Spring Framework?

  • Spring — это среда приложений с открытым исходным кодом, предназначенная для упрощения разработки приложений.
  • Он легкий и слабо связанный.
  • Он имеет многоуровневую архитектуру, которая позволяет пользователям выбирать компоненты, а также обеспечивает связную структуру для разработки приложений J2EE.
  • Он может интегрировать другие фреймворки, такие как Structs, Hibernate, EJB и т. д., поэтому его также называют фреймворком фреймворка.

1.3 Перечислите преимущества Spring Framework.

  • Благодаря многоуровневой архитектуре Spring Frameworks пользователи могут свободно выбирать нужные им компоненты.
  • Spring Framework поддерживает программирование POJO (обычный старый объект Java) для непрерывной интеграции и тестирования.
  • JDBC упрощается благодаря внедрению зависимостей и инверсии управления.
  • Это с открытым исходным кодом и бесплатно.

1.4 Каковы различные функции Spring Framework?

  • легкий- Spring является легким с точки зрения размера кода и прозрачности.
  • IOC- Инверсия контроля
  • AOP- Аспектно-ориентированное программирование позволяет разделить бизнес-логику приложений и системные службы для достижения высокой согласованности.
  • контейнер- Spring отвечает за создание и управление жизненным циклом и конфигурацией объектов (Beans).
  • MVC- Обеспечивает высокую степень настраиваемости для веб-приложений, а также очень удобна интеграция с другими фреймворками.
  • управление транзакциями- Обеспечивает общий уровень абстракции для управления транзакциями. Поддержка транзакций Spring также доступна в средах без контейнеров.
  • исключение JDBC- Уровень абстракции Spring JDBC обеспечивает иерархию исключений, которая упрощает стратегии обработки ошибок.

1.5 Сколько модулей в Spring Framework и какие они?

  • Контейнер с пружинным сердечником— Этот слой в основном является ядром Spring Framework. Он содержит следующие модули:
    • Spring Core
    • Spring Bean
    • SpEL (Spring Expression Language)
    • Spring Context
  • Доступ/интеграция данных– Этот уровень обеспечивает поддержку взаимодействия с базой данных. Он содержит следующие модули:
    • JDBC (Java DataBase Connectivity)
    • ORM (Object Relational Mapping)
    • OXM (Object XML Mappers)
    • JMS (Java Messaging Service)
    • Transaction
  • Web– Этот уровень обеспечивает поддержку создания веб-приложений. Он содержит следующие модули:
    • Web
    • Интернет — сервлет
    • Веб-сокет
    • Веб-портлеты
  • AOP– Этот уровень поддерживает аспектно-ориентированное программирование.
  • Instrumentation– Этот уровень обеспечивает поддержку обнаружения классов и реализации загрузчика классов.
  • Test– Этот уровень обеспечивает поддержку тестирования с помощью JUnit и TestNG.
  • Несколько разных модулей:
    • Обмен сообщениями — этот модуль обеспечивает поддержку STOMP. Он также поддерживает модель программирования аннотаций для маршрутизации и обработки сообщений STOMP от клиентов WebSocket.
    • Aspects — этот модуль обеспечивает поддержку интеграции с AspectJ.

1.6 Что такое файл конфигурации Spring?

Файлы конфигурации Spring представляют собой XML-файлы. Этот файл в основном содержит информацию о классе. В нем описывается, как эти классы настраиваются и вводятся друг в друга. Однако файлы конфигурации XML многословны и намного чище. В большом проекте становится очень сложно управлять, если он не спланирован и не написан правильно.

1.7 Каковы различные компоненты приложения Spring?

Приложения Spring обычно состоят из следующих компонентов:

  • интерфейс- Определите функцию.
  • Класс бобов- Он содержит свойства, методы установки и получения, функции и т. д.
  • Spring Аспектно-ориентированное программирование (АОП)- Обеспечивает функцию аспектно-ориентированного программирования.
  • Файл конфигурации бина- Содержит информацию о классах и способах их настройки.
  • Пользовательская программа- Он использует интерфейсы.

1.8 Как можно использовать Spring?

Используйте Spring следующими способами:

  • Как полноценное веб-приложение Spring.
  • В качестве стороннего веб-фреймворка используйте средний уровень Spring Frameworks.
  • Для удаленного использования.
  • Как корпоративный Java-бин, он может обертывать существующие POJO (обычные старые объекты Java).

2. Внедрение зависимостей (Ioc)

2.1 Что такое контейнер Spring IOC?

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

2.2 Что такое внедрение зависимостей?

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

2.3. Сколькими способами можно реализовать внедрение зависимостей?

Как правило, внедрение зависимостей может быть выполнено тремя способами, а именно:

  • Внедрение конструктора
  • инъекция сеттера
  • интерфейсная инъекция

В Spring Framework используются только инъекции конструктора и сеттера.

2.4 Различайте внедрение конструктора и внедрение сеттера.

Внедрение конструктора инъекция сеттера
без частичного впрыска с частичным впрыском
Не переопределяет свойства установщика переопределит свойство setter
Любая модификация создаст новый экземпляр Произвольная модификация не создает новый экземпляр
Подходит для настройки многих свойств Подходит для установки нескольких свойств

2.5 Сколько контейнеров МОК весной?

  • BeanFactory — BeanFactory подобен фабричному классу, содержащему коллекцию bean-компонентов. Он создает экземпляр компонента по запросу клиента.
  • ApplicationContext — интерфейс ApplicationContext расширяет интерфейс BeanFactory. Он предоставляет некоторые дополнительные функции поверх BeanFactory.

2.6 Различайте BeanFactory и ApplicationContext.

BeanFactory ApplicationContext
он использует ленивую загрузку он использует мгновенную загрузку
Он использует синтаксис для явного предоставления объектов ресурсов. Он сам создает объекты ресурсов и управляет ими
Интернационализация не поддерживается Поддержка интернационализации
Аннотации на основе зависимостей не поддерживаются Поддержка аннотаций на основе зависимостей

2.7 Перечислите некоторые преимущества IoC.

Некоторые из преимуществ IoC:

  • Это сведет к минимуму количество кода в приложении.
  • Это упростит тестирование вашего приложения, поскольку оно не требует какого-либо механизма поиска singleton или JNDI в случаях модульного тестирования.
  • Это способствует слабой связи с минимальным воздействием и минимальными навязчивыми механизмами.
  • Он поддерживает мгновенное создание экземпляров и ленивую загрузку сервисов.

2.8 Механизм реализации Spring IoC.

Принцип реализации IoC в Spring — фабричный режим плюс механизм отражения.

Пример:

interface Fruit {
     public abstract void eat();
}
class Apple implements Fruit {
    public void eat(){
        System.out.println("Apple");
    }
}
class Orange implements Fruit {
    public void eat(){
        System.out.println("Orange");
    }
}
class Factory {
    public static Fruit getInstance(String ClassName) {
        Fruit f=null;
        try {
            f=(Fruit)Class.forName(ClassName).newInstance();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return f;
    }
}
class Client {
    public static void main(String[] a) {
        Fruit f=Factory.getInstance("io.github.dunwu.spring.Apple");
        if(f!=null){
            f.eat();
        }
    }
}

3. Beans

3.1 Что такое весенняя фасоль?

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

3.2 Какие методы настройки предоставляет Spring?

  • конфигурация на основе xml

Зависимости и службы, требуемые bean-компонентом, указываются в файле конфигурации в формате XML. Эти файлы конфигурации обычно содержат множество определений bean-компонентов и параметров конфигурации для конкретных приложений. Обычно они начинаются с тега фасоли. Например:

<bean id="studentbean" class="org.edureka.firstSpring.StudentBean">
 <property name="name" value="Edureka"></property>
</bean>
  • Конфигурация на основе аннотаций

Вместо того чтобы использовать XML для описания сборки компонента, вы можете сконфигурировать компонент как класс самого компонента, используя аннотации к соответствующим объявлениям класса, метода или поля. По умолчанию сборка аннотаций в контейнере Spring не включена. Поэтому вам необходимо включить его в файле конфигурации Spring перед его использованием. Например:

<beans>
<context:annotation-config/>
<!-- bean definitions go here -->
</beans>
  • Конфигурация на основе Java API

Конфигурация Java Spring достигается за счет использования @Bean и @Configuration.

  1. Аннотация @Bean играет с<bean />Элементы одной роли.
  2. Классы @Configuration позволяют определять зависимости между компонентами, просто вызывая другие методы @Bean в том же классе.

Например:

@Configuration
public class StudentConfig {
    @Bean
    public StudentBean myStudent() {
        return new StudentBean();
    }
}

3.3 Поддерживает ли Spring централизованную область действия компонента?

Spring bean-компоненты поддерживают 5 областей:

  • Singleton- В контейнере Spring IoC существует только один экземпляр.
  • Prototype- Для каждого запроса создается новый экземпляр.
  • Request- Каждый HTTP-запрос будет генерировать новый экземпляр, и bean-компонент действителен только в рамках текущего HTTP-запроса.
  • Session- Каждый HTTP-запрос будет генерировать новый bean-компонент, и bean-компонент действителен только в рамках текущего сеанса HTTP.
  • Global-session- Аналогичен стандартной области сеанса HTTP, но имеет смысл только в веб-приложениях на основе портлетов. Спецификация портлета определяет концепцию глобального сеанса, который используется всеми различными портлетами, составляющими веб-приложение с портлетами. Объекты Bean, определенные в области глобального сеанса, ограничиваются временем существования глобального сеанса портлета. Если вы используете глобальную область сеанса для идентификации bean-компонента в сети, тогда сеть автоматически будет использовать его в качестве типа сеанса.

Последние три доступны, только если пользователь использует ApplicationContext с веб-поддержкой.

3.4 Каков жизненный цикл контейнера Spring Bean?

Поток жизненного цикла контейнера Spring Bean выглядит следующим образом:

  1. Контейнер Spring создает экземпляры bean-компонентов в соответствии с определениями bean-компонентов в конфигурации.
  2. Spring использует внедрение зависимостей для заполнения всех свойств, как определено в конфигурации bean-компонента.
  3. Если компонент реализует интерфейс BeanNameAware, фабрика вызывает setBeanName(), передавая идентификатор компонента.
  4. Если компонент реализует интерфейс BeanFactoryAware, фабрика вызывает setBeanFactory(), передавая свой экземпляр.
  5. Если с компонентом связаны какие-либо BeanPostProcessors, вызывается метод preProcessBeforeInitialization().
  6. Если для bean-компонента указан метод init (<bean>атрибут init-method), то он будет вызван.
  7. Наконец, если с компонентом связаны какие-либо BeanPostProcessors, будет вызван метод postProcessAfterInitialization().
  8. Если bean-компонент реализует интерфейс DisposableBean, destroy() вызывается, когда контейнер Spring закрывается.
  9. Если для компонента указан метод уничтожения (<bean>destroy-method), то он будет вызван.

3.5 Что такое весенние внутренние бобы?

Компонент может быть объявлен как внутренний компонент только тогда, когда компонент используется как свойство другого компонента. Для определения bean-компонентов используются метаданные конфигурации Spring на основе XML.<property>или<constructor-arg>предоставлено в<bean>использование элементов. Внутренние компоненты всегда анонимны, они всегда действуют как прототипы.

Например, предположим, что у нас есть класс Student, который ссылается на класс Person. Здесь мы просто создадим экземпляр класса Person и будем использовать его в Student.

Student.java

public class Student {
    private Person person;
    //Setters and Getters
}
public class Person {
    private String name;
    private String address;
    //Setters and Getters
}

bean.xml

<bean id=“StudentBean" class="com.edureka.Student">
    <property name="person">
        <!--This is inner bean -->
        <bean class="com.edureka.Person">
            <property name="name" value=“Scott"></property>
            <property name="address" value=“Bangalore"></property>
        </bean>
    </property>
</bean>

3.6 Что такое пружинная сборка

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

3.7 Какие существуют методы автопроводки?

Контейнер Spring может автоматически связывать bean-компоненты. То есть вы можете позволить Spring автоматически разрешать соавторов bean-компонентов, проверяя содержимое BeanFactory.

Различные режимы автопроводки:

  • no- Это настройка по умолчанию, указывающая на отсутствие автоматической сборки. Подключение должно быть выполнено с использованием явной ссылки на компонент.
  • byName- Он вводит зависимости объекта на основе имени компонента. Он сопоставляет и связывает bean-компонент, свойства которого определены тем же именем в XML-файле.
  • byType- Он вводит зависимости объектов на основе типа. Если тип свойства совпадает с именем компонента в XML-файле, свойство сопоставляется и связывается.
  • Конструктор- Он внедряет зависимости, вызывая конструктор класса. У него куча параметров.
  • autodetect- Сначала контейнер пытается подключиться через конструктор с помощью автоподключения, если нет, он пытается подключиться через byType.

3.8 Каковы ограничения автоматического подключения?

  • Возможность переопределить - вы всегда можете использовать<constructor-arg>а также<property>Установите указанные зависимости, которые будут переопределять автоматическое подключение.
  • Основные типы метаданных. Простые свойства, такие как примитивы, строки и классы, не могут быть связаны автоматически.
  • Запутанная природа — всегда предпочтительнее использовать явную сборку, так как автоматическая сборка менее точна.

4. Аннотация

4.1 Какие важные аннотации Spring вы использовали?

  • @Controller— Используется для классов контроллеров в проектах Spring MVC.
  • @Service- для классов обслуживания.
  • @RequestMapping— Используется для настройки сопоставлений URI в методах обработчика контроллера.
  • @ResponseBody- Используется для отправки объекта в качестве ответа, обычно используется для отправки данных XML или JSON в качестве ответа.
  • @PathVariable— Используется для сопоставления динамических значений из URI с параметрами метода обработчика.
  • @Autowired- Для автоматического подключения зависимостей в бинах Spring.
  • @Qualifier- Используйте аннотацию @Autowired, чтобы избежать путаницы при наличии нескольких экземпляров типа bean-компонента.
  • @Scope- Возможности для настройки bean-компонентов Spring.
  • @Configuration,@ComponentScanа также@Bean- Для конфигурации на основе Java.
  • @Aspect,@Before,@After,@Around,@Pointcut- Для аспектного программирования (АОП).

4.2 Как начать сборку аннотаций весной?

По умолчанию сборка аннотаций в контейнере Spring не включена. Следовательно, чтобы использовать сборку на основе аннотаций, мы должны настроить<context:annotation-config />элемент, чтобы включить его в файле конфигурации Spring.

4.3 В чем разница между @Component, @Controller, @Repository, @Service?

  • @Component: это помечает класс Java как bean-компонент. Это общий стереотип для любого компонента, управляемого Spring. Механизм сканирования компонентов Spring теперь может подобрать его и загрузить в среду приложения.
  • @Controller: это помечает класс как контроллер Spring Web MVC. Компоненты, отмеченные им, автоматически импортируются в контейнер IoC.
  • @Service: эта аннотация является специализацией аннотации компонента. Он не обеспечивает никакого другого поведения для аннотации @Component. Вы можете использовать @Service вместо @Component в классах сервисного уровня, так как это лучше определяет намерение.
  • @Repository: эта аннотация является специализацией аннотации @Component с аналогичной целью и функциональностью. Это дает дополнительные преимущества DAO. Он импортирует DAO в контейнер IoC и делает непроверенные исключения доступными для преобразования в Spring DataAccessException.

4.4 Для чего нужна аннотация @Required?

@Required применяется к методам установки свойств компонента. Эта аннотация просто указывает, что затронутые свойства bean-компонента должны быть заполнены во время настройки с использованием явных значений свойств в определении bean-компонента или с использованием автоматического связывания. Если затронутое свойство bean-компонента не было заполнено, контейнер выдаст исключение BeanInitializationException.

Пример:

public class Employee {
    private String name;
    @Required
    public void setName(String name){
        this.name=name;
    }
    public string getName(){
        return name;
    }
}

4.5 Для чего используется аннотация @Autowired?

@Autowired обеспечивает более точный контроль над тем, где и как должно происходить автоматическое подключение. Эта аннотация используется для автопривязки bean-компонентов к методам установки, конструкторам, свойствам или методам с произвольными именами или несколькими параметрами. По умолчанию это управляемая типом инъекция.

public class Employee {
    private String name;
    @Autowired
    public void setName(String name) {
        this.name=name;
    }
    public string getName(){
        return name;
    }
}

4.6 Для чего используется аннотация @Qualifier?

Когда вы создаете несколько bean-компонентов одного типа и хотите подключить только один из них со свойствами, вы можете использовать аннотацию @Qualifier и @Autowired для устранения неоднозначности, указав, какой именно bean-компонент должен быть подключен.

Например, здесь у нас есть два класса: Employee и EmpAccount. В EmpAccount используйте @Qualifier, чтобы указать, что bean-компонент с идентификатором emp1 должен быть подключен.

Employee.java

public class Employee {
    private String name;
    @Autowired
    public void setName(String name) {
        this.name=name;
    }
    public string getName() {
        return name;
    }
}

EmpAccount.java

public class EmpAccount {
    private Employee emp;

    @Autowired
    @Qualifier(emp1)
    public void showName() {
        System.out.println(“Employee name : ”+emp.getName);
    }
}

4.7 Для чего используется аннотация @RequestMapping?

Аннотация @RequestMapping используется для сопоставления определенного метода HTTP-запроса с определенным классом/методом в контроллере, который будет обрабатывать соответствующий запрос. Эта аннотация может применяться на двух уровнях:

  • Уровень класса: сопоставьте запрошенный URL
  • Уровень метода: сопоставление URL-адресов и методов HTTP-запросов.

5. Доступ к данным

5.1 В чем польза Spring DAO?

Spring DAO упрощает унифицированную работу таких технологий доступа к данным, как JDBC, Hibernate или JDO. Это позволяет пользователям легко переключаться между технологиями сохранения. Это также позволяет вам писать код, не думая о перехвате исключений, которые различны для каждой технологии.

5.2 Перечислите исключения, создаваемые Spring DAO.

5.3 Какие классы существуют в Spring JDBC API?

  • JdbcTemplate
  • SimpleJdbcTemplate
  • NamedParameterJdbcTemplate
  • SimpleJdbcInsert
  • SimpleJdbcCall

5.4 Какие есть способы получить доступ к Hibernate с помощью Spring?

Мы можем получить доступ к Hibernate с помощью Spring двумя способами:

  1. Инверсия управления с помощью шаблонов Hibernate и обратных вызовов
  2. Расширьте поддержку HibernateDAOSupport и примените узел перехватчика AOP

5.5 Перечислите типы управления транзакциями, поддерживаемые Spring

Spring поддерживает два типа управления транзакциями:

  1. Программное управление транзакциями: в этом процессе транзакции управляются с помощью программирования. Это дает вам большую гибкость, но очень трудно поддерживать.
  2. Декларативное управление транзакциями: здесь управление транзакциями отделено от бизнес-кода. Управляйте транзакциями, используя только аннотации или конфигурацию на основе XML.

5.6 Какие фреймворки ORM поддерживает Spring

  • Hibernate
  • iBatis
  • JPA
  • JDO
  • OJB

6. AOP

6.1 Что такое АОП?

АОП (аспектно-ориентированное программирование), то естьАспектно-ориентированное программирование, который дополняет ООП (объектно-ориентированное программирование, объектно-ориентированное программирование) и предлагает другой взгляд на абстрактную структуру программного обеспечения, отличный от ООП. В ООП мы используем класс в качестве нашей базовой единицы, а базовой единицей в АОП являетсяАспект

6.2 Что такое параметры Aspect, Advice, Pointcut, JointPoint и Advice в АОП?

  • Aspect- Aspect — это класс, реализующий сквозные задачи, такие как управление транзакциями. Аспекты могут быть простыми классами, которые настроены, а затем настроены в файлах конфигурации Spring Bean, или мы можем использовать поддержку Spring AspectJ для объявления классов как Аспектов с помощью аннотации @Aspect.
  • Advice- Совет — это действие, предпринятое для конкретной точки присоединения. Программно это методы, которые выполняются, когда в приложении достигается конкретная точка присоединения с совпадающим pointcut. Вы можете думать о Advice как о перехватчике Spring или фильтре сервлетов.
  • Advice Arguments- мы можем передавать параметры в процессе консультации. Мы можем использовать выражение args (в pointcut) для применения к любому методу, который соответствует режиму параметров. Если мы его используем, то это же имя нужно использовать и в совете метода определения параметров типа.
  • Pointcut- Pointcut — это регулярное выражение, которое сопоставляется с JoinPoint, чтобы определить, нужно ли выполнять совет. Pointcut использует другой тип выражения, соответствующий JoinPoint. Spring Framework использует язык выражений AspectJ Pointcut для определения точки присоединения, к которой будет применяться метод рекомендации.
  • JoinPoint— JoinPoint — это конкретная точка в приложении, например, выполнение метода, обработка исключений, изменение значения переменной объекта и т. д. В Spring AOP JoinPoint всегда является исполнителем метода.

6.3 Что такое совет?

Действие, предпринятое Аспектом в конкретной точке присоединения, называется советом. Spring AOP использует Advice в качестве перехватчика, поддерживая серию перехватчиков «вокруг» точки присоединения.

6.4 Какие существуют типы советов?

  • Before- Эти типы Advice выполняются перед методом точки присоединения и настраиваются с помощью тега аннотации @Before.
  • After Returning- Эти типы советов выполняются после нормального выполнения метода точки соединения и настраиваются с помощью тега аннотации @AfterReturning.
  • After Throwing- Эти типы Advice выполняются только тогда, когда метод точки соединения завершает работу, вызывая исключение и помечая конфигурацию аннотацией @AfterThrowing.
  • After (finally)- Эти типы советов выполняются после метода точки соединения, независимо от того, завершается ли метод нормально или аварийно, и помечаются аннотацией @After.
  • Around- Эти типы советов выполняются до и после точки соединения и настраиваются с помощью тега аннотации @Around.

6.5 Укажите разницу между беспокойством и сквозным беспокойством в spring aop.

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

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

6.6 Каковы методы реализации АОП?

Технологии реализации АОП в основном делятся на две категории:

  • Статический прокси — относится к использованию команд, предоставляемых платформой АОП для компиляции, так что класс прокси АОП может быть сгенерирован на этапе компиляции, поэтому его также называют улучшением времени компиляции;
    • переплетение во время компиляции (специальная реализация компилятора)
    • Переплетение во время загрузки классов (специальная реализация загрузчика классов).
  • Динамические прокси-классы — динамические прокси-классы AOP генерируются «временно» в памяти во время выполнения, поэтому также называются улучшениями во время выполнения.
    • Динамический прокси JDK
    • CGLIB

6.7 В чем разница между Spring AOP и AspectJ AOP?

Spring AOP реализован на основе динамического прокси, AspectJ реализован на основе статического прокси. Spring AOP поддерживает PointCut только на уровне методов; обеспечивая полную поддержку AOP, он также поддерживает PointCut на уровне свойств.

6.8 Как понимать прокси в Spring?

Объекты, созданные после применения Advice к целевому объекту, называются прокси. В случае клиентских объектов целевой объект и прокси-объект совпадают.

Advice + Target Object = Proxy

6.9 Что такое ткачество?

Связывание аспекта с другими типами приложений или объектами для создания объекта рекомендации называется объединением. В Spring AOP переплетение выполняется во время выполнения. Пожалуйста, обратитесь к изображению ниже:

7. MVC

7.1 В чем польза среды Spring MVC?

Spring Web MVC Framework предоставляетМодель-представление-контроллерАрхитектура и готовые к использованию компоненты для разработки гибких и слабосвязанных веб-приложений. Шаблон MVC помогает разделить различные аспекты приложения, такие как логика ввода, бизнес-логика и логика пользовательского интерфейса, обеспечивая при этом слабую связь между всеми этими элементами.

7.2. Опишите рабочий процесс DispatcherServlet

Рабочий процесс DispatcherServlet можно проиллюстрировать картинкой:

  1. Отправить HTTP-запрос на сервер, запрос обрабатывается фронт-контроллеромDispatcherServletзахватывать.
  2. DispatcherServletсогласно с-servlet.xmlКонфигурация анализирует запрошенный URL-адрес, чтобы получить идентификатор ресурса запроса (URI). Затем на основе этого URI вызовитеHandlerMappingПолучите все связанные объекты, настроенные обработчиком (включая объект обработчика и перехватчик, соответствующий объекту обработчика), и, наконец, используйтеHandlerExecutionChainвозвращается как объект.
  3. DispatcherServletСогласно полученномуHandler, выберите подходящийHandlerAdapter. (Примечание: в случае успешного полученияHandlerAdapter, начнется выполнение метода preHandler(...) перехватчика).
  4. извлекатьRequestДанные модели в , заполненыHandlerВведите параметры и начните выполнениеHandler(Controller). заполнениеHandlerВ процессе ввода параметров, в соответствии с вашей конфигурацией, Spring выполнит за вас дополнительную работу:
    • HttpMessageConveter: преобразуйте сообщение запроса (например, Json, XML и другие данные) в объект и преобразуйте объект в указанную информацию ответа.
    • Преобразование данных: выполните преобразование данных в сообщении запроса. Такие какStringПеревести вInteger,DoubleЖдать.
    • Форматирование корня данных: форматирование данных сообщения запроса. Например, преобразование строк в форматированные числа или форматированные даты и т. д.
    • Проверка данных: проверьте правильность данных (длина, формат и т. д.) и сохраните результаты проверки вBindingResultилиErrorсередина.
  5. После выполнения обработчика (контроллера) отправитьDispatcherServletвернутьModelAndViewобъект;
  6. Согласно возвращенномуModelAndView, выберите подходящийViewResolver(Должен быть зарегистрирован в контейнере SpringViewResolver) возвращается вDispatcherServlet.
  7. ViewResolverкомбинироватьModelа такжеView, чтобы отобразить представление.
  8. Представление отвечает за возврат обработанного результата клиенту.

7.3. Введение в WebApplicationContext

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

8. Информация

(над)


:point_right: Чтобы узнать больше о Spring, вы можете посетить мой учебник по Spring:spring-tutorial