Подробное объяснение 47 классических вопросов весеннего интервью в марте 2020 года (с ответами)

Spring

предисловие

В этой статье в основном представлены 47 классических вопросов для весеннего интервью. Тимо считает, что это очень хорошо. Эту статью видели в Интернете, и точная исходная ссылка не была найдена. Некоторые я сделал некоторые модификации. Поделитесь им здесь для справки. Бывает сейчас золотая тройка серебряная четверка, надеюсь всем будет полезно, если будет полезно ставьте лайк и поддержите! (Если оригинальный автор увидит его, пожалуйста, свяжитесь с Тимо, добавьте оригинальный источник или удалите его)

Название - уловка, если вам не нравится, вы можете оставить сообщение и сбрызнуть меня (я толстокожий, иначе я не смогу догнать свою нынешнюю девушку, хххххх)

1. Каковы основные особенности разных версий Spring Framework?

Version Feature
Spring2.5 Опубликовано в 2007 году. Это первая версия, поддерживающая аннотации.
Spring3.0 Опубликовано в 2009 году. Он в полной мере использует улучшения Java5 и обеспечивает поддержку JEE6.
Spring4.0 Опубликовано в 2013 году. Это первая версия, которая полностью поддерживает JAVA8.
spring5.0 Опубликовано в 2017 году. Используйте функции JDK 8, поддерживайте реактивное программирование, функциональную веб-инфраструктуру и поддержку Kotlin.

2. Что такое Spring Framework?

  • Spring — это среда приложений с открытым исходным кодом, предназначенная для упрощения разработки приложений.

  • Он легкий и слабо связанный.

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

  • Он может интегрировать другие фреймворки, такие как Structs, Hibernate, EJB и т. д., поэтому его также называют фреймворком фреймворка.

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

  • Благодаря многоуровневой архитектуре Spring Frameworks пользователи могут свободно выбирать нужные им компоненты.

  • Spring Framework поддерживает программирование POJO (обычный старый объект Java) для непрерывной интеграции и тестирования.

  • JDBC упрощается благодаря внедрению зависимостей и инверсии управления.

  • Это с открытым исходным кодом и бесплатно.

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

  • Легкий — Spring является легким с точки зрения размера кода и прозрачности.

  • МОК - инверсия управления

  • АОП. Аспектно-ориентированное программирование может применяться для разделения бизнес-логики и системных служб для достижения высокой согласованности.

  • Контейнер — Spring отвечает за создание и управление жизненным циклом и конфигурацией объектов (бинов).

  • MVC — обеспечивает высокую степень настраиваемости для веб-приложений, также очень удобна интеграция с другими фреймворками.

  • Управление транзакциями — обеспечивает общий уровень абстракции для управления транзакциями. Поддержка транзакций Spring также доступна в средах без контейнеров.

  • Исключения JDBC. Уровень абстракции JDBC Spring обеспечивает иерархию исключений, которая упрощает стратегии обработки ошибок.

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

在这里插入图片描述

Spring Core Container — этот слой является ядром 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 — этот уровень обеспечивает поддержку создания веб-приложений. Он содержит следующие модули: AOP — этот уровень поддерживает аспектно-ориентированное программирование.

  • Web

  • Интернет — сервлет

  • Веб-сокет

  • Веб-портлеты

Инструментарий — этот уровень обеспечивает поддержку инструментирования класса и реализации загрузчика классов.

Test — этот уровень обеспечивает поддержку тестирования с помощью JUnit и TestNG.

Несколько модулей Разное:

  • Обмен сообщениями — этот модуль обеспечивает поддержку STOMP. Он также поддерживает модель программирования аннотаций, которая используется для маршрутизации клиентов WebSocket и обработки сообщений STOMP.

  • Aspects — этот модуль обеспечивает поддержку интеграции с AspectJ.

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

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

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

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

  • Интерфейс - функция определения.

  • Класс Bean — содержит свойства, методы установки и получения, функции и так далее.

  • Spring Аспектно-ориентированное программирование (АОП) — обеспечивает функциональность аспектно-ориентированного программирования.

  • Файл конфигурации компонента — содержит информацию о классах и способах их настройки.

  • Пользовательская программа - она ​​использует интерфейс.

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

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

  • Как полноценное веб-приложение Spring.

  • В качестве стороннего веб-фреймворка используйте средний уровень Spring Frameworks.

  • Для удаленного использования.

  • Как корпоративный Java-бин, он может обертывать существующие POJO (обычные старые объекты Java). Bean, который может обертывать существующие POJO (обычные старые объекты Java).

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

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

在这里插入图片描述

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

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

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

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

  • Внедрение конструктора

  • инъекция сеттера

  • интерфейсная инъекция

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

12. Различие между внедрением конструктора и внедрением сеттера

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

13. Сколько типов контейнеров IOC существует весной?

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

ApplicationContext — интерфейс ApplicationContext расширяет интерфейс BeanFactory. Он предоставляет некоторые дополнительные функции поверх BeanFactory.

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

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

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

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

  • Это сведет к минимуму количество кода в приложении.

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

  • Это способствует слабой связи с минимальным воздействием и минимальными навязчивыми механизмами.

  • Он поддерживает мгновенное создание экземпляров и ленивую загрузку сервисов.

16. Механизм реализации 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();
        }
    }
}

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

  • Это объекты, составляющие основу пользовательского приложения.

  • Бины управляются контейнером Spring IoC.

  • Они создаются, настраиваются, подключаются и управляются контейнером Spring IoC.

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

18. Какие способы настройки предоставляет 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.

  • Аннотация @Bean играет ту же роль, что и элемент .

  • @Configuration Class позволяет определить с другими методами @bean класс, просто вызывая зависимости между фасолью.

Например:

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

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

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

  • Синглтон — в контейнере Spring IoC есть только один синглтон.

  • Прототип — при каждом запросе создается новый экземпляр.

  • Запрос — для каждого HTTP-запроса создается новый экземпляр, и bean-компонент действителен только в рамках текущего HTTP-запроса.

  • Сессия - каждый HTTP-запрос будет генерировать новую фасоль, и фасоль действителен только в текущем сеансе HTTP.

  • Глобальная сессия — аналогична стандартной области сеанса HTTP, но имеет смысл только в веб-приложениях на основе портлетов. Спецификация портлета определяет концепцию глобального сеанса, который используется всеми различными портлетами, составляющими веб-приложение с портлетами. Объекты Bean, определенные в области глобального сеанса, ограничиваются временем существования глобального сеанса портлета. Если вы используете глобальную область сеанса для идентификации bean-компонента в сети, тогда сеть автоматически будет использовать его в качестве типа сеанса.

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

20. Каков жизненный цикл контейнера для бобов Spring?

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

  • Контейнер Spring создает экземпляры bean-компонентов в соответствии с определениями bean-компонентов в конфигурации.

  • Spring использует внедрение зависимостей для заполнения всех свойств, как определено в конфигурации bean-компонента.

  • Если компонент реализует интерфейс BeanNameAware, фабрика вызывает setBeanName(), передавая идентификатор компонента.

  • Если фасоль реализует интерфейс BeanFactoryaware, завод вызовов SETBEANFACTORY (), передавая свой экземпляр самого себя.

  • Если с компонентом связаны какие-либо BeanPostProcessors, вызывается метод preProcessBeforeInitialization().

- Если для bean-компонента указан метод инициализации (атрибут init-method ), он будет вызван.

  • Наконец, если с компонентом связаны какие-либо BeanPostProcessors, будет вызван метод postProcessAfterInitialization().

  • Если bean-компонент реализует интерфейс DisposableBean, destroy() вызывается, когда контейнер Spring закрывается.

  • Он будет вызван, если для bean-компонента указан метод уничтожения (атрибут destroy-method ).

在这里插入图片描述

21. Что такое внутренние бобы весной?

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

Например, предположим, что у нас есть класс 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>

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

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

23. Какие существуют методы автоматической сборки?

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

Различные режимы захвата:

  • НЕТ — это настройка по умолчанию, указывающая на отсутствие автоматической сборки. Явная ссылка на компонент должна быть собрана.

  • byName — внедряет зависимости объектов на основе имени bean-компонента. Он сопоставляет и связывает bean-компонент, свойства которого определены тем же именем в XML-файле.

  • byType — внедряет зависимости объектов на основе типа. Если тип свойства совпадает с именем компонента в XML-файле, свойство сопоставляется и связывается.

  • Конструктор — внедряет зависимости, вызывая конструктор класса. У него куча параметров.

  • autodetect — сначала контейнер пытается подключиться через конструктор с помощью автоподключения, если нет, он пытается выполнить автоподключение через byType.

24. Каковы ограничения захвата?

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

  • Основные типы метаданных. Простые свойства, такие как примитивы, строки и классы, не могут быть связаны автоматически.

  • Запутанная природа — всегда предпочтительнее использовать явную сборку, так как автоматическая сборка менее точна.

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

  • @Controller — используется для классов контроллеров в проектах Spring MVC.

  • @Service - для классов обслуживания.

  • @RequestMApping — настраивает сопоставление URI в методе обработчика контроллера.

  • @ResponseBody — используется для отправки объекта в качестве ответа, обычно данных XML или JSON в качестве ответа.

  • @PathVariable — используется для сопоставления динамических значений из URI с параметрами метода обработчика.

  • @Autowired — для автоматически подключаемых зависимостей в бинах Spring.

  • @Qualifier — используйте аннотацию @Autowired, чтобы избежать путаницы при наличии нескольких экземпляров типа компонента.

  • @Scope — область, используемая для настройки компонента Spring.

  • @Configuration, @ComponentScan и @Bean — для конфигурации на основе Java.

  • @Aspect, @Beform, @after, @around, @pointcut - для аспекта программирование (AOP).

26. Как начать собирать ноты весной?

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

27. В чем разница между @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.

28. Какая польза от аннотаций @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;
    }
}

29. Какая польза от аннотации @Autowired?

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

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

30. Какая польза от аннотации @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);
    }
}

31. Аннотация @ RequestMapping какая польза?

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

  • Уровень класса: сопоставьте запрошенный URL

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

32. Какая польза от Spring DAO?

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

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

在这里插入图片描述

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

  • JdbcTemplate

  • SimpleJdbcTemplate

  • NamedParameterJdbcTemplate

  • SimpleJdbcInsert

  • SimpleJdbcCall

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

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

  • Инверсия управления с помощью шаблонов Hibernate и обратных вызовов

  • Расширьте поддержку HibernateDAOSupport и примените узел перехватчика AOP

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

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

  • Программное управление транзакциями: в этом процессе транзакции управляются с помощью программирования. Это дает вам большую гибкость, но очень трудно поддерживать.

  • Декларативное управление транзакциями: здесь управление транзакциями отделено от бизнес-кода. Управляйте транзакциями, используя только аннотации или конфигурацию на основе XML.

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

  • Hibernate

  • iBatis

  • JPA

  • JDO

  • OJB

37. Что такое АОП?

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

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

在这里插入图片描述

  • Аспект. Аспект — это класс, который реализует перекрестные задачи, такие как управление транзакциями. Аспекты могут быть общим классом, который затем можно настроить в файле конфигурации Spring Bean, или мы можем использовать Spring AspectJ для поддержки использования аннотаций @ASPECT для объявления класса как аспекта.

  • Совет. Совет — это действие, предпринятое для определенной точки присоединения. Программно это методы, которые выполняются, когда в приложении достигается конкретная точка присоединения с совпадающим pointcut. Вы можете думать о Advice как о перехватчике Spring или фильтре сервлетов.

  • Аргументы совета. Мы можем передавать аргументы в методах совета. Мы можем использовать выражения args() в pointcut для применения к любому методу, который соответствует шаблону аргумента. Если мы его используем, то нам нужно использовать то же имя в методе совета, который определяет тип параметра.

  • Pointcut — Pointcut — это регулярное выражение, сопоставляемое с JoinPoint, чтобы определить, нужно ли выполнять совет. Pointcut использует другой тип выражения, соответствующий JoinPoint. Spring Framework использует язык выражений AspectJ Pointcut для определения точки присоединения, к которой будет применяться метод рекомендации.

  • JoinPoint. JoinPoint — это определенная точка в приложении, например выполнение метода, обработка исключений, изменение значений переменных объекта и т. д. В Spring AOP JoinPoint всегда является исполнителем метода.

39. Что такое совет?

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

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

  • До — эти типы советов выполняются до метода точки присоединения и настраиваются с помощью аннотации @Before.

  • После возврата — эти типы советов выполняются после нормального выполнения метода точки соединения и настраиваются с помощью тега аннотации @AfterReturning.

  • After Throwing — эти типы советов выполняются только тогда, когда метод точки соединения завершает работу, вызывая исключение и помечая конфигурацию аннотацией @AfterThrowing.

  • После (наконец) — эти типы советов выполняются после метода точки соединения, независимо от того, завершается ли метод нормально или ненормально, и помечаются аннотацией @After.

  • Вокруг — эти типы рекомендаций выполняются до и после точки соединения и помечаются аннотацией @Around для настройки.

41. Разница указывала на весеннем aOP и озабоченность беспорядки.

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

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

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

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

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

  2. Ткачество (специальные реализации погрузчика класса), когда классный погрузчик.

  • Динамические прокси-классы — динамические прокси-классы AOP генерируются «временно» в памяти во время выполнения, поэтому также называются улучшениями во время выполнения.
  1. Динамический прокси JDK

  2. CGLIB

42. В чем разница между АОП Spring и АОП AspectJ?

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

43. Как понять прокси в Spring?

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

`Advice + Target Object = Proxy`

44. Что такое ткачество?

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

在这里插入图片描述

45. Чем полезен фреймворк Spring MVC?

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

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

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

在这里插入图片描述

  1. Отправьте HTTP-запрос на сервер, и запрос будет перехвачен DispatcherServlet переднего контроллера.

  2. DispatcherServlet анализирует запрос URL в соответствии с конфигурацией -servlet.xml и получает запрошенный идентификатор ресурса (URI). В соответствии с этим, затем URI, доступ ко всей соответствующей конфигурации обработчика вызова HandlerMapping объекта (включая объекты и обработчик объекта обработчика, соответствующий перехватчику) и, наконец, возвращается как объект HandlerExecutionChain.

  3. DispatcherServlet выбирает подходящий HandlerAdapter в соответствии с полученным Handler . (Примечание: если HandlerAdapter успешно получен, в это время будет выполнен метод preHandler(...) перехватчика).

  4. Извлеките данные модели в запросе, заполните входные параметры обработчика и начните выполнение обработчика (контроллера). В процессе заполнения входных параметров обработчика, в соответствии с вашей конфигурацией, Spring выполнит за вас дополнительную работу: после выполнения обработчика (контроллера) он возвращает объект ModelAndView в DispatcherServlet;

HttpMessageConveter: преобразование сообщения запроса (например, Json, XML и других данных) в объект и преобразование объекта в указанную информацию ответа.

Преобразование данных: выполните преобразование данных в сообщении запроса. Например, преобразование String в Integer, Double и так далее.

Форматирование корня данных: форматирование данных сообщения запроса. Например, преобразование строк в форматированные числа или форматированные даты и т. д.

Проверка данных: проверьте достоверность данных (длину, формат и т. д.) и сохраните результат проверки в BindingResult или Error.

  1. В соответствии с возвращенным ModelAndView выберите подходящий ViewResolver (должен быть ViewResolver, зарегистрированный в контейнере Spring) и верните его DispatcherServlet.

  2. ViewResolver объединяет модель и представление для визуализации представлений.

  3. Представление отвечает за возврат обработанного результата клиенту.

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

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

Наконец, карта обучения прилагается:

PS: Ресурсы слишком велики, если вам это нужно, обратите внимание на общедоступную учетную запись: JavaTimo может ответить: весна, чтобы получить.

Существует более 400 страниц документов PDF для более чем 1000 вопросов собеседования Java от более чем 1000 компаний, которые были организованы по теме. Есть также сотни страниц базовых знаний Java Core PDF, а также большое количество учебных материалов

Хорошо, эта статья здесь! Если есть какие-то ошибки в этой статье, пожалуйста, покритикуйте совет, это не благодарно!