до начала
Когда я писал эту статью, я действительно колебался, потому что в Интернете есть много руководств по этому уроку Spring. Тем не менее, я лично надеюсь, что смогу обобщить как можно больше на нижнем уровне; моя личная цель учебника Spring в основном состоит в том, чтобы изучить нижний слой; возможно, это сложное начало; могут быть некоторые ошибки в течение периода, я надеюсь, что все обсудят это вместе.
Обзор
Введение в весну:
Spring FrameWork теперь выпустила Spring 5.0; Spring Framework представляет собой полнофункциональную среду приложений.
Особенности весны:
- Легкий: по сравнению с контейнером EJB контейнер IoC, используемый Spring, очень легкий, а базовая версия среды Spring весит всего около 2 МБ. Spring позволяет разработчикам разрабатывать приложения корпоративного уровня, используя только POJO (обычный старый объект Java, в отличие от EJB). Преимущество этого заключается в том, что вам не нужно использовать раздутый EJB-контейнер (сервер приложений), вам нужен только легкий контейнер сервлетов (например, Tomcat). Особенно в некоторых разработках, когда памяти и ресурсов ЦП не хватает, использование Spring более экономно, чем EJB, для разработки и развертывания приложений.
- Инверсия управления (IOC): Spring использует технологию инверсии управления для достижения слабой связи. Вместо создания или поиска зависимых объектов зависимости внедряются в объекты. Аспектно-ориентированное программирование (АОП): Spring поддерживает аспектно-ориентированное программирование, отделяя при этом бизнес-логику приложения от системных сервисов.
- MVC Framework: Spring MVC — очень хорошая среда MVC, которая может заменить другие веб-фреймворки, такие как Struts. Интеграция: Spring очень легко интегрировать и разрабатывать с другими популярными фреймворками, в число которых входят: фреймворк ORM, фреймворк ведения журналов, JEE, Quartz и фреймворки уровня представления, такие как Struts.
- Управление транзакциями: мощные возможности управления транзакциями Spring могут обрабатывать локальные транзакции (одна база данных) или глобальные транзакции (несколько данных, используя JTA). Разделение модулей: среда Spring состоит из модулей. Хотя пакетов и классов уже слишком много, все они разбиты по модулям, вам нужно только учитывать модули, которые вы будете использовать, и игнорировать остальные модули.
- Обработка исключений: поскольку многие методы в Java JDBC, Hibernate и других API генерируют проверенные исключения, многие разработчики не могут хорошо обрабатывать исключения. Spring предоставляет унифицированный API для преобразования этих проверенных исключений в непроверенные исключения Spring.
- Модульное тестирование: код, написанный Spring, очень легко выполнить модульное тестирование, а внедрение зависимостей можно использовать для внедрения тестовых данных в программу.
История весны
Прямая публикация статей обновлена до Spring Framwork 5.0; если вы хотите ознакомиться с функциями других версий, рекомендуется обратиться к сообщению в блоге «Изменения исторической версии Spring и сегодняшняя экологическая империя».
-
обновление JDK
Изначально планировалось, что Spring Framework 5.0 будет выпущен поверх Java 9, теперь же минимальное требование для фреймворка — Java 8. -
Основные исправления фреймворка
Пересмотрено на основе новых функций, представленных в Java 8:
- Благодаря улучшениям отражения в Java 8 доступ к параметрам метода в Spring Framework 5.0 стал более эффективным.
- Базовый интерфейс Spring теперь предоставляет необязательные объявления, основанные на методах Java 8 по умолчанию. использовать
- Аннотации @Nullable и @NotNull для отображения параметров, допускающих значение NULL, и возвращаемых значений. Этого достаточно для обработки нулей во время компиляции вместо того, чтобы генерировать исключения NullPointerException во время выполнения.
На основе аспекта ведения журнала:
- Spring Framework 5.0 содержит инкапсуляцию связующего модуля Commons Logging под названием spring-jcl вместо стандартного Commons Logging. Конечно, новая версия также будет автоматически определять Log4j 2.x, SLF4J, JUL (java.util.logging) без каких-либо дополнительных соединений.
- Обновление основного контейнера
Spring Framework 5.0 теперь поддерживает индексирование компонентов-кандидатов в качестве альтернативы сканированию путей к классам. Эта функция была добавлена в сканер путей к классам, чтобы упростить добавление идентификаторов компонентов-кандидатов.
допустимыйВ Spring JiraУзнайте больше об индексации компонентов
- Функциональное программирование с Kotlin
Введена поддержка языка JetBrains Kotlin. Kotlin — это объектно-ориентированный язык, поддерживающий функциональный стиль программирования. Kotlin работает на JVM, но среда выполнения не ограничивается JVM.
Автор не очень хорошо знаком с языком Kotlin, много комментировать не буду.
- модель реактивного программирования
Интересной особенностью выпуска Spring является новая веб-инфраструктура реактивного стека. Этот стек является полностью реактивным и неблокирующим, подходит для обработки в стиле циклов событий и может масштабироваться с помощью небольшого количества потоков.
Последующее обсуждение этой темы;Spring WebFlux
- Тестовые улучшения
Spring Framework 5.0 полностью поддерживает JUnit 5 Jupiter, поэтому JUnit 5 можно использовать для написания тестов и расширений. Помимо предоставления модели программирования и расширения, подпроект Jupiter предоставляет механизм тестирования для запуска тестов на основе Jupiter в Spring. Кроме того, Spring Framework 5 предоставляет расширения для параллельного тестирования в Spring TestContext Framework.
Для модели реактивного программирования spring-test теперь также поддерживает интеграционный тест Spring WebFlux WebTestClient, аналогичный MockMvc, для которого не требуется работающий сервер. Используя фиктивный запрос или ответ, WebTestClient может напрямую связываться с серверным средством WebFlux.
- поддержка библиотеки
В настоящее время Spring Framework 5.0 поддерживает следующие версии обновленных библиотек:
- В настоящее время Spring Framework 5.0 поддерживает следующие версии обновленных библиотек:
- Jackson 2.6+
- EhCache 2.10+ / 3.0 GA
- Hibernate 5.0+
- JDBC 4.0+
- XmlUnit 2.x+
- OkHttp 3.x+
- Netty 4.1+
- Прекращена поддержка
На уровне API Spring Framework 5.0 больше не поддерживает следующие пакеты:
- beans.factory.access
- jdbc.support.nativejdbc
- mock.staticmock для модуля spring-aspects
- web.view.tiles2M (требуется минимум 3 тайла)
- orm.hibernate3 и orm.hibernate4.
В настоящее время поддерживается Hibernate 5.
- Portlet.
- Velocity.
- JasperReports.
- XMLBeans.
- JDO.
- Guava.
Если вы используете какой-либо из вышеперечисленных пакетов, рекомендуется поддерживать версию Spring Framework 4.3.x.
быстрый старт
Spring официально рекомендует использовать SpringBoot для создания программ среды Spring, но здесь мы сосредоточимся на содержании среды Spring; поэтому здесь мы используем среду Spring для сборки; позже будут возможности для создания руководств и материалов SpringBoot.
среда разработки
- затмение или ИДЕЯ
- JDK8 (рекомендуется)/7
- Spring Framwork5
Начинать
-
Создайте проект Maven; каталог проекта выглядит следующим образом:
-
Helloworld с использованием аннотаций:
файл pom.xml:
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
</dependencies>
hello/MessageService.java
package hello.annotation;
public interface MessageService {
String getMessage();
}
hello/MessagePrinter.java
package hello.annotation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class MessagePrinter {
final private MessageService service;
@Autowired
public MessagePrinter(MessageService service) {
this.service = service;
}
public void printMessage() {
System.out.println(this.service.getMessage());
}
}
hello/Application.java
package hello.annotation;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.*;
@Configuration
@ComponentScan
public class Application {
@Bean
MessageService mockMessageService() {
return new MessageService() {
public String getMessage() {
return "Hello World!";
}
};
}
public static void main(String[] args) {
ApplicationContext context =
new AnnotationConfigApplicationContext(Application.class);
MessagePrinter printer = context.getBean(MessagePrinter.class);
printer.printMessage();
}
}
- Используйте конфигурацию файла xml: applicationContext.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-3.0.xsd">
<bean id="MessageService" class="hello.xml.MessageService">
<property name="message" value="Hello World!"/>
</bean>
</beans>
MessageService.java
package hello.xml;
public class MessageService {
private String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
Application.java
package hello.xml;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Application {
public static void main(String[] args) {
ApplicationContext application = new ClassPathXmlApplicationContext("applicationContext.xml");
MessageService messageService = application.getBean(MessageService.class);
System.out.println(messageService.getMessage());
}
}
4. Результат выполнения:
Кратко объясните:
- Согласно файлу конфигурации известно, что класс конфигурации инициализирует контейнер ApplicationContext.
- Внедрить объект Bean (MessageService) в соответствии с конфигурацией
- Создание экземпляра контейнера динамически создает объекты Bean На самом деле, выше; нижний уровень использует режим создания фабрики; контейнер Spring единообразно создает и управляет объектами Java Bean; конкретный анализ будет объяснен позже.
Использованная литература:
- Изучайте Spring вместе со мной 3 (1) – Зачем изучать Spring
- Официальная информация SPringle
- Меняется историческая версия весны и сегодняшняя экологическая империя
- Что нового в Spring Framework 5.0