Spring IO - платформа для построения приложений, предоставляющая набор зависимостей, при этом давая разработчикам полный контроль над деплоем только тех из них, которые им нужны. [1.1]
Spring Boot - генерация средств упрощения процесса конфигурации Spring приложений. Он не является средством автоматической генерации кода, а представляет собой плагин для системы автоматизации сборки проектов. [1.2]
Spring Framework - обеспечивает базовую поддержку управления зависимостями, управление транзакциями веб-приложений, доступ к данным, обмен сообщениями и многое другое. [1.3]
Spring Web Services - нацелен на облегчения разработки SOAP-сервиса методом contract-airst, позволяя создавать легкоизменяемые веб-сервисы путем конфигурации XML-настроек. [1.4]
Spring Data - упрощает использование таких технологий доступа к данным, как реляционные и нереляционные СУБД, map-reduce фреймворки и облачные сервисы. Spring Data состоит из подпроектов для конкретной СУБД. Эти проекты разработаны множеством компаниями и разработчиками, которые стоят за этими технологиями. [1.5]
Spring Framework — обесепечивает решения многих задач, с которыми сталкиваются java-разработчики и организации, которые хотят создать информационную систему, основанную на платформе Java. Наиболее известен как источник расширений, нужных для эффективной разработки сложных бизнес-приложений вне тяжеловесных программных моделей, которые исторически были доминирующими в промышленности.
Beans - объекты, формирующие фундамент приложения и управляемые Spring IoC контейнером.
IoC (Inversion of Control) — паттерн для передачи контроля за создание объектов контейнеру.
Dependency Injection (DI) — процесс предоставления внешней зависимости программному компоненту. Является одним из примеров IoC.
IoC Container отвечает за инстанцирование, конфигурирование и сборку объектов. IoC контейнер получает информацию из XML файла и с ним же работает. Существует два типа IoC конейнеров: BeanFactory и ApplicationContext.
BeanFactory Container - простейший контейнер, предоставляющий базовую поддержку для DI.
Resource resource = new ClassPathResource("applicationContext.xml");
BeanFactory factory = new XmlBeanFactory(resource);
ApplicationContext Container - этот контейнер добавляет интерпрайз функциональность поверх BeanFactory контейнера..
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
AOP (Aspect Oriented Programmin) - парадигма программирования, основанная на идее разделения функциональности для улучшения разбиения программы на модули.
SpEL (Spring Expression Language) - мощный язык для выполнения запросов и манипуляций с графом объектов во время рантайма.
Spring Framework Runtime [2.1]

Core Container [2.2]
spring-core - модуль, предоставляющий основные части фреймворка, включая IoC и DI особенности.spring-bean - модуль, предоставляющий BeanFactory контейнер, который представляет собой реализацию паттерна фабрики.spring-context - модуль, предоставляющий ApplicationContext контейнер, построенный на основе Core и Beans модулей, который является посредником при получении доступа к любому объекту.spring-expression - модуль, предоставляющий мощный язык Expression Language для выполнения запросов и манипуляций с графом объектов во время рантайма.AOP and Instrumentation [2.3]
spring-instrument - обеспечивает поддержку инструментария классов и реализации classloader, которые могут использоваться в некоторых серверных приложениях.spring-aop - предоставляет реализацию аспектно-ориентированного программирования, позволяющую вам определять, например, перехватчиков методов и pointcuts, чтобы чистенько разъединить код, который реализует различную функциональность.spring-aspects - модуль, предоставляющий интеграцию с AspectJ, который является мощным AOP фреймворком.spring-instrument-tomcat - модуль, содержащий спринговский инструментарий для Tomcat.Messaging [2.4]
spring-messaging - модуль, предоставляющий абстракции из Spring Integration проекта, такие как Message, MessageChannel, MessageHandler и другие. Они служат основой для messaging-based приложений. Он также включает в себя набор аннотаций для маппинга сообщений в методы.Data Access/Integration [2.5]
spring-jdbc - модуль, предоставляющий уровень JDBC-абстракции, который освобождает от утомительного кодинга JDBC аспектов.spring-orm - модуль, предоставляющий интеграционные уровни для популярных объекто-ориентированных mapping API, включая JPA, JDO, Hibernate, iBatis.spring-oxm - модуль, предоставляющий уровень абстракции, который поддерживает Object/XML mapping реализации для JAXB, Castor, XMLBeans, JiBX и XStream. spring-jms - модуль, содержащий фичи для создания и использования сообщений. Начиная с 4.1 версии фреймворка, он предоставляет интеграцию с spring-messaging модулем.spring-tx - модуль, поддерживающий программное и декларативное транзакционное управления для всех POJO и классов, которые реализуют специальные интерфейсы.Web [2.6]
spring-web - модуль, предоставляющий базовые web-ориентированые интеграционные фичи, такие как multipart file-upload функциональность и инициализация IoC контейнера используя листнеры и web-ориентированные context модули приложения.spring-webmvc - модуль (также известный, как Web-Servlet модуль), содержащий Spring MVC и REST Web Services реализацию для веб приложений.spring-websocket - модуль , предоставляющий поддержку для WebSocket-based приложений, для двусторонних коммуникаций между клиентами и для серверов в веб приложениях.spring-webmvc-portlet - модуль (также известный, как Web-Portlet модуль), предоставляющий функциональность Web-Servlet модуля, а также MVC реализацию для использования в Portlet среде. Отражает функциональность spring-webmvc модуля.Test [2.7]
spring-test - модуль, поддерживающий тестирование Spring компонентов с использованием JUnit или TestNG фреймворков.Dependency Management - процесс, включающий в себя распределение в проекте всех библиотек завимимостей в виде jar файлов, их хранение и добавление в classpaths. [2.8]
common-dbcp, который зависит от commons-pool).Maven "Bill Of Materials" Dependency - чтобы не произошло путанницы или ошибок с версиями спринговских jar зависимостей при использовании мавена, существует концепция - "bill of materials" (BOM) зависимость. [2.9]
spring-framework-bom зависимость. После этого отпадает необходимость писать <version> в зависимостях спринга.JCL (Jakarta Commons Logging) API - обязательная зависимость логгирования в спринге.
commons-logging - модуль, зависимый от spring-core модуля, реализует JCL Log объекты. Он заставляет все прочие модули зависить от себя во время компиляции. [2.10]spring-core модуля. [2.11]SLF4J (Simple Logging Facade for Java) - лучше, чем commons-logging и эффективнее в рантайме, потому что использует время компиляции для привязок, вместо того, чтобы юзать runtime поиск. [2.12]
IoC (Inversion of Control) — паттерн для передачи контроля за создание объектов контейнеру.
DI (Dependency Injection) - процесс, в котором объекты определяют свои зависимости посредством внедрения.
org.springframework.beans, org.springframework.contextApplicationContext - интерфейс, который представляет собой Spring IoC контейнер и отвечает за инстанциирование, конфигурирование и сборку бинов. Он получает инструкции о том, с какими объектами он работает, через конфигурационные метаданные, которые могут быть представлены в виде XML, Java аннотаций или Java кода.
ClassPathXmlApplicationContext, FileSystemXmlApplicationContext, GenericApplicationContext, GenericGroovyApplicationContext, GenericWebApplicationContext, GenericXmlApplicationContext, GroovyWebApplicationContext, ResourceAdapterApplicationContext, StaticApplicationContext, StaticPortletApplicationContext, StaticWebApplicationContext, XmlPortletApplicationContext, XmlWebApplicationContextResource - интерфейс, предназначенный для абстракции доступа к низкоуровневым ресурсам. [4.1]
public interface InputStreamSource {
InputStream getInputStream() throws IOException;
}
public interface Resource extends InputStreamSource {
boolean exists();
boolean isOpen();
URL getURL() throws IOException;
File getFile() throws IOException;
Resource createRelative(String relativePath) throws IOException;
String getFilename();
String getDescription();
}
getInputStream() - находит и открывает ресурс, возвращая InputStream для чтения из ресурса.exists() - проверяет, если ресурс существует физически или нет.isOpen() - проверяет, если ресурс представляет хендл с открытым стримом.getDescription() - возвращает описание для данного ресурса. Используется для вывода ошибок при работе с ресурсом.UrlResource служит оберткой для java.net.URL, и может быть использован для доступа к любому объекту, который доступен по URL, например файлы, HTTP ссылка, FTP ссылка и т.д. [4.2]
ClassPathResource - реализация Resource, которая поддерживает разрешения java.io.File. Ресурс был создан Java кодом явно используя конструктор, но постоянно будет создаваться неявно, когда вы будете вызывать API метод, который принимает путь аргументом в виде строки. [4.3]
FileSystemResource - реализация Resource для java.io.File хэндлеров. Поддерживает разрешения из File и из URL. [4.4]
ServletContextResource - реализация Resource для java.io.File хэндлеров. Поддерживает разрешения из File и из URL. [4.5]
InputStreamResource - реализация Resource для заданного InputStream. Она должна быть использована только в случае, если нет подходящей реализации для Resource. [4.6]
Resource, эта является дескрипторои для уже открытого ресурса, поэтому всегда метод isOpen() этого класса возвращает true.ByteArrayResource - реализация Resource для заданного массива байт. Она создает ByteArrayInputStream для этого массива. [4.7]
InputStreamResource.ResourceLoader - интерфейс, предназначенный для объектов, которые могут возвращать (т.е. загружать) Resource инстансы. [4.8]
public interface ResourceLoader {
Resource getResource(String location);
}
Resource инстансы.Resource template = ctx.getResource("some/resource/path/myTemplate.txt");
Resource template = ctx.getResource("classpath:some/resource/path/myTemplate.txt");
Resource template = ctx.getResource("file:///some/resource/path/myTemplate.txt");
Resource template = ctx.getResource("http://myhost.com/resource/path/myTemplate.txt");
AppliacationContext реализации.ResourceLoaderAware - специальный указательный интерфейс, иденцифицирующий объекты, которые ожидают реализации ResourceLoader. [4.9]
public interface ResourceLoaderAware {
void setResourceLoader(ResourceLoader resourceLoader);
}
ResourceLoaderAware. Этот контекст затем вызовет setResourceLoader(ResourceLoader), предоставляя методу себя, как аргумент.Resources as dependencies - если бин обладает свойством типа Resource, он может быть сконфигурирован с помощью простой строки для этого ресурса. [4.10] Например:
<bean id="myBean" class="...">
<property name="template" value="some/resource/path/myTemplate.txt"/>
<property name="template" value="classpath:some/resource/path/myTemplate.txt">
<property name="template" value="file:///some/resource/path/myTemplate.txt"/>
</bean>
ClassPathResource, FileSystemResource или ServletContextResource).Constructing application contexts - конструктор контекста приложения обычно принимает строку или массив строк в качестве пути к ресурсу, как например к XML файлу, который составляет определение конекста. [4.11]
ApplicationContext ctx = new ClassPathXmlApplicationContext("conf/appContext.xml");
ClassPathResource. Но если создать FileSystemXmlApplicationContext следующим образом:ApplicationContext ctx = new FileSystemXmlApplicationContext("conf/appContext.xml");
ApplicationContext ctx = new FileSystemXmlApplicationContext("classpath:conf/appContext.xml");
FileSystemXmlApplicationContext, хотя и перезапишет дефолтный тип Resource, созданного для загрузки бина.ApplicationContext ctx = new ClassPathXmlApplicationContext(
new String[] {"services.xml", "daos.xml"}, MessengerService.class);
ClassPathXmlApplicationContext инстанс состоит из нескольких определений бинов, указанный в service.xml и daos.xml. [4.12]ApplicationContext ctx =
new ClassPathXmlApplicationContext("classpath*:conf/appContext.xml");
ApplicationContext ctx =
new FileSystemXmlApplicationContext("file:///conf/context.xml");
FileSystemApplicationContext заставляет все привязанные к FileSystemResource инстансы воспринимать пути как относитенльные, не важно со слешем они или без), то настоящий абсолютный путь будет записываться с помощью префикса file. [4.14]AOP (Aspect Oriented Programming) - АОП - парадигма программирования, основанная на идее разделения функциональности для улучшения разбиения программы на модули. В то время, как в ООП главной чертой модульности является класс, в АОП - это аспект.
Aspect - Аспект - набор задач, разделенных между множеством классов. Управление транзакциями является хорошим примером разделения задачи в корпоративных Java приложениях.
Join point - Точка входа - всегда представляет собой выполнение метода.
Advice - Совет - событие, выполненное одним из аспектов в конкретной точке входа.
Introduction - Представление - объявляет дополнительные методы или поля в зависимости от типа.
Target object - Целевой объект - объект, который является советом для одного или более аспектов.
AOP proxy - АОП прокси - объект, созданный АОП фреймворком для реализации контрактов аспектов (выполнение метода совета и типо того).
Weaving - Связывание - связывание аспектов с типами или объектами приложения для создания объекта аспекта.