Esta sección proporciona más detalles sobre cómo utilizar Spring Boot. Cubre temas como sistemas de compilación, configuración automática y ejecución de aplicaciones. También veremos algunas de las mejores prácticas para trabajar con Spring Boot. Si bien Spring Boot no tiene nada de especial (es solo otra biblioteca que puede usar), existen algunas prácticas recomendadas que pueden facilitar un poco el proceso de desarrollo.
Construir sistemas
Es Se recomienda encarecidamente que elija un sistema de compilación que admita la gestión de dependencias y que pueda consumir artefactos publicados en el repositorio "Maven Central". Recomendamos elegir Maven o Gradle. Es posible hacer que Spring Boot funcione con otros sistemas de compilación (como Ant), pero no cuentan con un soporte particularmente bueno.
Gestión de dependencias
Cada versión de Spring Boot proporciona una lista de dependencias admitidas. En la práctica, no es necesario especificar la versión de ninguna de estas dependencias en la configuración de compilación, ya que Spring Boot lo hará por usted. Si actualiza Spring Boot, estas dependencias también se actualizarán de manera consistente.
Esta lista cuidadosamente seleccionada contiene todos los módulos Spring que se pueden usar con Spring Boot,
así como una lista refinada de bibliotecas de terceros. Esta lista está disponible como un paquete de contenido
estándar (spring-boot-dependencies
) que se puede usar tanto con Maven como con Gradle.
enfáticamente
que no especifique su versión.
Maven
Para obtener información sobre el uso de Spring Boot con Maven, consulte el complemento Spring Boot para obtener más información. Documentación de Maven:
Gradle
Para obtener información sobre el uso de Spring Boot con Gradle, consulte la documentación del complemento Spring Boot para Gradle:
Ant
Puedes construir un proyecto en Spring Boot usando Apache Ant+Ivy. También hay un módulo "AntLib" spring-boot-antlib
,
que está diseñado para ayudar a Ant a crear archivos jar ejecutables.
Para declarar dependencias, un archivo típico es ivy.xml
se parece al siguiente ejemplo:
<ivy-module version="2.0">
<info organisation="org.springframework.boot" module="spring-boot-sample-ant" />
<configurations>
<conf name="compile" description="everything needed to compile this module" />
<conf name="runtime" extends="compile" description="everything needed to run this module" />
</configurations>
<dependencies>
<dependency org="org.springframework.boot" name="spring-boot-starter"
rev="${spring-boot.version}" conf="compile" />
</dependencies>
</ivy-module>
Un build.xml
típico tiene este aspecto:
<project
xmlns:ivy="antlib:org.apache.ivy.ant"
xmlns:spring-boot="antlib:org.springframework.boot.ant"
name="myapp" default="build">
<property name="spring-boot.version" value="2.7.5" />
<target name="resolve" description="--> retrieve dependencies with ivy">
<ivy:retrieve pattern="lib/[conf]/[artifact]-[type]-[revision].[ext]" />
</target>
<target name="classpaths" depends="resolve">
<path id="compile.classpath">
<fileset dir="lib/compile" includes="*.jar" />
</path>
</target>
<target name="init" depends="classpaths">
<mkdir dir="build/classes" />
</target>
<target name="compile" depends="init" description="compile">
<javac srcdir="src/main/java" destdir="build/classes" classpathref="compile.classpath" />
</target>
<target name="build" depends="compile">
<spring-boot:exejar destfile="build/myapp.jar" classes="build/classes">
<spring-boot:lib>
<fileset dir="lib/runtime" />
</spring-boot:lib>
</spring-boot:exejar>
</target>
</project>
>
Paquetes de inicio
Los paquetes de inicio son un conjunto de descriptores de dependencia convenientes que puede incluir en su
aplicación. Obtiene una ventanilla única para todas las tecnologías Spring y relacionadas que necesita, sin
tener que buscar en ejemplos de código y copiar y pegar un montón de descriptores de dependencia. Por ejemplo,
si desea comenzar a usar Spring y JPA para acceder a la base de datos, incluya la dependencia spring-boot-starter-data-jpa
en su proyecto.
Los paquetes iniciales contienen muchos dependencias necesarias para que su proyecto esté en funcionamiento rápidamente con un conjunto consistente y compatible de dependencias de transición manejables.
Los siguientes paquetes de inicio para aplicaciones, Spring Boot, se proporcionan dentro del grupo org.springframework.boot
:
Nombre | Descripción |
---|---|
Paquete de inicio básico, que incluye soporte para configuración automática, registro y YAML |
|
Paquete de inicio para mensajería JMS usando Apache ActiveMQ |
|
Paquete de inicio para usar Spring AMQP y Rabbit MQ |
|
Paquete de inicio para programación orientada a aspectos usando Spring AOP y AspectJ |
|
Paquete de inicio para mensajería JMS usando Apache Artemis |
|
Paquete de inicio para usar Spring Batch |
|
Paquete de inicio para usar el soporte de almacenamiento en caché en Spring Framework |
|
Paquete de inicio para usar la base de datos distribuida Cassandra y Spring Data Cassandra |
|
Paquete de inicio para usar una base de datos distribuida de Cassandra y Spring Data Cassandra Reactive |
|
Paquete de inicio para usar la base de datos orientada a documentos Couchbase y Spring Data Couchbase |
|
Paquete inicial para usar la base de datos orientada a documentos Couchbase y Spring Data Couchbase Reactive |
|
Paquete de inicio para utilizar el motor de búsqueda y análisis Elasticsearch y Spring Data Elasticsearch |
|
Paquete de inicio para usar Spring Data JDBC |
|
Paquete de inicio para usar Spring Data JPA con Hibernate |
|
Paquete de inicio para usar Spring Data LDAP |
|
Paquete de inicio para usar la base de datos orientada a documentos MongoDB y Spring Data MongoDB |
|
Paquete de inicio para usar la base de datos orientada a documentos MongoDB y Spring Data MongoDB Reactive |
|
Paquete de inicio para usar la base de datos de gráficos Neo4j y Spring Data Neo4j |
|
Paquete de inicio para usar Spring Data R2DBC |
|
Paquete inicial para usar el almacén de datos clave-valor de Redis a través de Spring Data Redis y el cliente Lettuce |
|
Paquete inicial para usar el almacén de datos clave-valor de Redis a través del almacén reactivo Spring Data Redis y el cliente Lettuce |
|
Iniciador paquete para abrir repositorios de Spring Data sobre REST usando Spring Data REST |
|
Paquete de inicio para crear aplicaciones web MVC utilizando vistas de FreeMarker |
|
Paquete de inicio para crear aplicaciones GraphQL usando Spring GraphQL |
|
Paquete de inicio para crear un MVC web Aplicaciones que utilizan vistas Plantillas Groovy |
|
Paquete de inicio para crear una aplicación web RESTful basada en hipermedia a través de Spring MVC y Spring HATEOAS |
|
Paquete de inicio para usar Spring Integration |
|
Paquete de inicio para usar JDBC con el grupo de conexiones HikariCP |
|
Paquete de inicio para crear aplicaciones web RESTful usando JAX-RS y Jersey. |
|
Paquete de inicio para usar jOOQ para proporcionar acceso a bases de datos SQL usando JDBC. |
|
Paquete inicial para leer y escribir json |
|
Paquete de inicio para JTA- transacciones usando Atomikos |
|
Un paquete inicial para usar Java Mail y las funciones de soporte de correo electrónico de Spring Framework |
|
Paquete de inicio para crear aplicaciones web utilizando vistas Moustache |
|
Paquete de inicio para usar las funciones del cliente Spring Security OAuth2/OpenID Connect |
|
Paquete de inicio para usar las funciones del servidor de recursos OAuth2 en Spring Security |
|
Paquete de inicio para usar el programador Quartz |
|
Paquete inicial para crear clientes y servidores RSocket |
|
Paquete de inicio para usar Spring Seguridad |
|
Un paquete inicial para probar aplicaciones Spring Boot utilizando bibliotecas que incluyen JUnit Jupiter, Hamcrest y Mockito |
|
Paquete de inicio para crear aplicaciones web MVC utilizando vistas Thymeleaf |
|
Paquete de inicio para usar Java Bean Validation con Hibernate Validator |
|
Paquete de inicio para crear aplicaciones web, incluido RESTful, utilizando Spring MVC. Utiliza Tomcat como contenedor integrado predeterminado |
|
Paquete de inicio para usar Spring Web Services |
|
Paquete de inicio para crear aplicaciones WebFlux utilizando soporte web reactivo en Spring Framework |
|
Paquete de inicio para crear aplicaciones WebSocket utilizando el soporte WebSocket en Spring Framework |
Además de los paquetes de inicio de aplicaciones, se pueden utilizar los siguientes paquetes de inicio para agregar funcionalidad lista para producción:
Nombre | Descripción |
---|---|
Un paquete inicial para usar Actuator de Spring Boot, que proporciona funciones para la implementación de producción, que ayudan usted monitorea y administra su aplicación |
Finalmente, Spring Boot también incluye los siguientes paquetes de inicio que puede usar si desea excluir o intercambiar ciertos aspectos técnicos:
Nombre | Descripción |
---|---|
Paquete de inicio para usar Jetty como un contenedor de servlets integrado. |
|
Paquete de inicio para usar Log4j2 con fines de registro. |
|
Paquete de inicio para iniciar sesión utilizando Logback. Paquete de inicio de registro predeterminado |
|
Un paquete inicial para usar Reactor Netty como servidor HTTP reactivo integrado. |
|
Paquete inicial para usar Tomcat como contenedor de servlets integrado. El paquete de inicio
predeterminado para el contenedor de servlets utilizado por |
|
Paquete inicial para usar Undertow como sistema integrado contenedor de servlets . |
spring-boot-starters
en GitHub.
Estructuración de código
Spring Boot no requiere ninguna estructura de código específica para funcionar. Sin embargo, existen algunas prácticas recomendadas que son útiles.
Uso del paquete "predeterminado"
Si una clase no contiene una declaración paquete
, es Se considera que está en el "paquete por
defecto". Por lo general, no se recomienda el uso del "paquete predeterminado" y se debe evitar. Esto puede
causar problemas específicos para las aplicaciones Spring Boot que usan las anotaciones
@ComponentScan
, @ConfigurationPropertiesScan
, @EntityScan
o @SpringBootApplication
a medida que se lee cada clase de cada archivo jar.
com.example.project
).
Colocar la clase de aplicación principal
Generalmente se recomienda colocar la clase de aplicación principal en el paquete raíz encima de otras. clases.
La anotación @SpringBootApplication
a menudo se coloca en la clase principal e implícitamente
define un "paquete de búsqueda" base para ciertos elementos. Por ejemplo, si está escribiendo una aplicación
JPA, el paquete de clases marcado con la anotación @SpringBootApplication
se usa para buscar
elementos con la anotación @Entity
. El uso de un paquete raíz también le permite aplicar el escaneo
de componentes exclusivamente a su proyecto.
@SpringBootApplication
anotación El
@EnableAutoConfiguration
y @ComponentScan
que importa el paquete definen la misma
lógica, por lo que puede usarlos en su lugar.
La lista a continuación se muestra una estructura típica:
com +- example +- myapplication +- MyApplication.java | +- customer | +- Customer.java | +- CustomerController.java | +- CustomerService.java | +- CustomerRepository.java | +- order +- Order.java +- OrderController.java +- OrderService.java +- OrderRepository.java
En el archivo MyApplication.java
el método main
junto con la base @SpringBootApplication
se declarará de la siguiente manera:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
@SpringBootApplication
class MyApplication
fun main(args: Array<String>) {
runApplication<MyApplication>(*args)
}