Sabemos que la función de configuración automática del arranque de resorte puede determinar qué configuración de resorte se debe usar y cuál no debe usarse de acuerdo con diferentes situaciones. Por ejemplo:
¿Cómo se logró esto? La razón es que utiliza la configuración condicional de Spring, que permite que existan configuraciones en la aplicación, pero estas configuraciones se ignoran antes de cumplir ciertas condiciones específicas.
Para implementar la configuración condicional, necesitamos usar la anotación condicional @conditional. A continuación, escribamos un pequeño ejemplo para experimentar cómo funciona @conditional.
1. @Conditional pequeño ejemplo
Sabemos que el comando para mostrar la lista en Windows es Dir, mientras que el comando para mostrar la lista en el sistema Linux es LS. Según la configuración condicional, podemos lograr diferentes valores en diferentes sistemas operativos.
1. Definición de condiciones de juicio
1.) Condiciones de decisión en Windows
/** * Implement spring's Condition interface, and override the matches() method, and return true if the operating system is Windows * */public class WindowsCondition implements Condition{ @Override public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) { return context.getEnvironment().getProperty("os.name").contains("Windows"); }}2.) Condiciones de decisión bajo Linux
/** * Implemente la interfaz de condición de Spring, y anule el método de coincidencias (), y return true si el sistema operativo es Linux * */public class LinuxCondition implementa la condición {@Override public boolean Matches (ConditionContext context, annotatedTypEmetAdata metadata) {return context.getenvironment (). }}2. Clases de frijoles en diferentes sistemas
1.) Interfaz
Interfaz pública ListService {public String showListLine ();}2.) clase de frijoles en Windows
Public Class WindowsListservice implementa listService {@Override public String showListline () {return "dir"; }}3.) clase de frijoles en Linux
public class LinuxListService implementa listService {@Override public String showListline () {return "ls"; }}3. Clase de configuración
@ConfigurationPublic Class ConditionConfig { / *** Pase la anotación @conditional y devuelva la instancia de WindowsListservice si cumple con las condiciones de Windows** / @Bean @conditional (WindowsCondition.class) public ListService WindonWSlistService () {return New WindowsListService ();; } / *** Pase la anotación @conditional y devuelva la instancia de LinuxListservice si cumple con las condiciones de Linux** / @Bean @Conditional (LinuxCondition.Class) public ListService LinuxListService () {return New LinuxListService (); }}4. Clase de prueba
CLASE Public ConditionTest {public static void main (string [] args) {annotationConfigApplicationContext context = new AnnotationConfigApplicationContext (condición ConditionCig.class); ListService listService = context.getBean (listservice.class); System.out .println (context.getEnvironment (). GetProperty ("OS.Name") + "El comando de lista en el sistema es:" + ListService.Showlistline ()); }}5. Ejecute la clase de prueba, ya que estoy en el sistema Windows 7, el resultado es
Los comandos de la lista en el sistema Windows 7 son: Dir
Si el suyo está en Linux, el resultado será
Los comandos de la lista en el sistema Linux son: LS
2. Configuración condicional del arranque de primavera
En el proyecto Spring Boot, habrá un paquete jar llamado Spring-Boot-Autoconfigure
La configuración condicional se implementa en este jar. Utiliza las siguientes anotaciones condicionales, que comienzan con @conditional:
A continuación, veamos una columna del código fuente:
Tome jdbctemplateAutoconfiguration como ejemplo, contiene este código:
@Bean @Primary @ConditionAlonMissingBean (JDBCoperations.Class) public JDBCTEMPLATE JDBCTEMPLATE () {return new jdbctemplate (this.dataSource); }Se inicializará un bean JDBCTemplate solo cuando no hay JDBCoperations (si observa el código fuente de JDBCTemplate, encontrará que la clase JDBCTEMPLATE implementa la interfaz JDBCoperations).
Según el contenido anterior, podemos leer el código fuente relacionado con la configuración automática.
Resumir
Lo anterior es la configuración automática de @conditional y spring boot en el arranque de primavera introducido por el editor. Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje y el editor le responderá a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!