[[preface]]
= Preface

This chapter includes:

* xref:preface.adoc#system-requirements[Requirements]
* xref:preface.adoc#code-conventions[Code Conventions]
* xref:preface.adoc#guide-conventions[Conventions in This Guide]

[[system-requirements]]
== Requirements

This section details the compatible https://www.oracle.com/technetwork/java/javase/downloads/index.html[Java] and https://spring.io/projects/spring-framework[Spring Framework] versions.

[[supported-java-versions]]
=== Compatible Java Versions

For Spring Integration 6.4.x, the minimum compatible Java version is Java SE 17.
Older versions of Java are not supported.

[[supported-spring-versions]]
=== Compatible Versions of the Spring Framework

Spring Integration 6.4.x requires Spring Framework 6.2 or later.

[[code-conventions]]
== Code Conventions

Spring Framework 2.0 introduced support for namespaces, which simplifies the XML configuration of the application context and lets Spring Integration provide broad namespace support.

In this reference guide, the `int` namespace prefix is used for Spring Integration's core namespace support.
Each Spring Integration adapter type (also called a module) provides its own namespace, which is configured by using the following convention:


The following example shows the `int`, `int-event`, and `int-stream` namespaces in use:

[source,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"
  xmlns:int="http://www.springframework.org/schema/integration"
  xmlns:int-webflux="http://www.springframework.org/schema/integration/webflux"
  xmlns:int-stream="http://www.springframework.org/schema/integration/stream"
  xsi:schemaLocation="
   http://www.springframework.org/schema/beans
   https://www.springframework.org/schema/beans/spring-beans.xsd
   http://www.springframework.org/schema/integration
   https://www.springframework.org/schema/integration/spring-integration.xsd
   http://www.springframework.org/schema/integration/webflux
   https://www.springframework.org/schema/integration/webflux/spring-integration-webflux.xsd
   http://www.springframework.org/schema/integration/stream
   https://www.springframework.org/schema/integration/stream/spring-integration-stream.xsd">
…
</beans>
----

For a detailed explanation regarding Spring Integration's namespace support, see xref:configuration/namespace.adoc[Namespace Support].

NOTE: The namespace prefix can be freely chosen.
You may even choose not to use any namespace prefixes at all.
Therefore, you should apply the convention that best suits your application.
Be aware, though, that SpringSource Tool Suite™ (STS) uses the same namespace conventions for Spring Integration as used in this reference guide.

[[guide-conventions]]
== Conventions in This Guide

In some cases, to aid formatting when specifying long fully qualified class names, we shorten `org.springframework` to `o.s` and `org.springframework.integration` to `o.s.i`, such as with `o.s.i.transaction.TransactionSynchronizationFactory`.

[[overview-feedback]]
== Feedback and Contributions

For how-to questions or diagnosing or debugging issues, we suggest using Stack Overflow.
Click https://stackoverflow.com/questions/tagged/spring-integration?tab=Newest[here] for a list of the latest questions.
If you're fairly certain that there is a problem in the Spring Integration or would like to suggest a feature, please use the https://github.com/spring-projects/spring-integration/issues[GitHub Issues].

If you have a solution in mind or a suggested fix, you can submit a pull request on https://github.com/spring-projects/spring-integration[GitHub].
However, please keep in mind that, for all but the most trivial issues, we expect a ticket to be filed in the issue tracker, where discussions take place and leave a record for future reference.

For more details see the guidelines at the https://github.com/spring-projects/spring-integration/blob/main/CONTRIBUTING.adoc[CONTRIBUTING], top-level project page.


[[overview-getting-started]]
== Getting Started

If you are just getting started with Spring Integration, you may want to begin by creating a https://projects.spring.io/spring-boot/[Spring Boot]-based application.
Spring Boot provides a quick (and opinionated) way to create a production-ready Spring-based application.
It is based on the Spring Framework, favors convention over configuration, and is designed to get you up and running as quickly as possible.

You can use https://start.spring.io/[start.spring.io] to generate a basic project (add `integration` as dependency) or follow one of the https://spring.io/guides["Getting Started" guides], such as https://spring.io/guides/gs/integration/[Getting Started Building an Integrating Data].
As well as being easier to digest, these guides are very task focused, and most of them are based on Spring Boot.
