Spring Boot prefiere una configuración basada en Java. Aunque puede usar SpringApplication
con fuentes
XML, generalmente recomendamos que la fuente principal sea una única clase anotada con @Configuration
.
Normalmente, la clase que define el método main
es un buen candidato para ser el
@Configuration
principal.
Enable*
puede ser un buen punto de partida.
Importar clases de configuración adicionales
No es necesario colocar todas las anotaciones @Configuration
en una clase. Puede utilizar la anotación
@Import
para importar clases de configuración adicionales. Además, puede utilizar la anotación @ComponentScan
para recopilar automáticamente todos los componentes de Spring, incluidas las clases con la anotación @Configuration
.
Importar configuración XML
Si es absolutamente necesario utilizar una configuración basada en XML, le recomendamos comenzar con una clase
marcada con la anotación @Configuration
. Luego puede utilizar la anotación @ImportResource
para cargar los archivos de configuración XML.
Configuración automática
La configuración automática en Spring Boot intenta configurar automáticamente su aplicación Spring en función de las
dependencias jar agregadas. Por ejemplo, si HSQLDB
está en su classpath, pero no ha configurado
manualmente ningún beans para conectarse a la base de datos, Spring Boot configurará automáticamente una base de
datos residente.
Debe optar explícitamente por la configuración automática agregando las anotaciones
@EnableAutoConfiguration
o @SpringBootApplication
a una de sus clases con @Configuration
anotación.
@SpringBootApplication
o
@EnableAutoConfiguration
. Generalmente recomendamos agregar una anotación particular solo a la clase
principal anotada con @Configuration
.
Reemplazo gradual de la configuración automática
La configuración automática funciona de forma no agresiva. Puede comenzar a definir su propia configuración en
cualquier momento para reemplazar ciertas partes de la configuración automática. Por ejemplo, si agrega su propio
bean DataSource
, la compatibilidad con bases de datos integradas está deshabilitada de forma
predeterminada.
Si desea saber qué configuración automática se está aplicando actualmente y por qué, ejecute la aplicación con la
opción --debug
. Esto habilitará los registros de depuración para los administradores de registro
primarios seleccionados y generará un informe de condición en la consola.
Deshabilitar ciertas clases de configuración automática
Si descubre que hay ciertas clases de configuración automática que no necesita, puede usar el atributo de exclusión
en la anotación @SpringBootApplication
para deshabilitarlas, como se muestra en el siguiente ejemplo:
@SpringBootApplication(excluir = { DataSourceAutoConfiguration.class })
clase pública MiAplicación {
}
@SpringBootApplication(exclude = [DataSourceAutoConfiguration::clase])
clase MiAplicación
Si la clase no está en el classpath, puede usar el atributo excludeName
de la anotación y especificar el
nombre completo en su lugar. Si prefiere utilizar la anotación @EnableAutoConfiguration
en lugar de la
anotación @SpringBootApplication
, las funciones exclude
y excludeName
también
estar disponible. Finalmente, puede controlar la lista de clases de configuración automática que se excluyen usando
la propiedad spring.autoconfigure.exclude
.
public
, el
único aspecto de una clase que se considera una API pública es el nombre de la clase, que puede se puede utilizar
para desactivar la configuración automática. El contenido real de estas clases, como las clases de configuración
anidadas o los métodos de bean, son solo para uso interno y no recomendamos usarlos directamente.
Las judías verdes y la inyección de dependencia
Puede utilizar cualquiera de las herramientas estándar de Spring Framework para definir sus beans y sus dependencias
inyectables. Generalmente recomendamos usar la inyección de dependencia del constructor para vincular dependencias y
la anotación @ComponentScan
para encontrar beans.
Si estructura su código como se sugirió anteriormente (colocando la clase de aplicación en el paquete superior),
puede agregar la anotación @ComponentScan
sin ningún argumento, o usar la anotación @SpringBootApplication
, que lo contiene implícitamente. Todos los componentes de su aplicación (anotaciones
@Component
, @Service
, @Repository
, @Controller
y otras) son
registrado automáticamente como Spring beans.
El siguiente ejemplo muestra un bean marcado con la anotación @Service
que utiliza la inyección de
dependencia del constructor para obtener el bean RiskAssessor
requerido:
@Servicio
clase pública MyAccountService implementa AccountService {
RiskAssessor final privado RiskAssessor;
público MyAccountService(Evaluador de riesgos evaluador de riesgos) {
this.riskAssessor = riesgoAssessor;
}
//...
}
@Servicio
clase MyAccountService (valor privado RiskAssessor: RiskAssessor): AccountService
Si un bean tiene más de un constructor, entonces necesitas marcar el que deseas usar Spring con la anotación @Autowired
:
@Servicio
clase pública MyAccountService implementa AccountService {
RiskAssessor final privado RiskAssessor;
PrintStream final privado;
@autocableado
público MyAccountService(Evaluador de riesgos evaluador de riesgos) {
this.riskAssessor = riesgoAssessor;
this.out = Sistema.out;
}
público MyAccountService(RiskAssessor RiskAssessor, PrintStream out) {
this.riskAssessor = riesgoAssessor;
this.out = fuera;
}
//...
}
@Servicio
clase MiServicioCuenta: ServicioCuenta {
val privado RiskAssessor: RiskAssessor
salida de valor privado: PrintStream
@autocableado
constructor (evaluador de riesgos: evaluador de riesgos) {
this.riskAssessor = evaluador de riesgos
salida = Sistema.salida
}
constructor(riesgoAssessor: RiskAssessor, fuera: PrintStream) {
this.riskAssessor = evaluador de riesgos
this.out = fuera
}
//...
}
riskAssessor
como final
, lo que significa que no se puede cambiar
más adelante.
GO TO FULL VERSION