Sabemos que a função de configuração automática da inicialização da mola pode determinar qual configuração da mola deve ser usada e quais não devem ser usados de acordo com diferentes situações. Por exemplo:
Como isso foi alcançado? O motivo é que ele utiliza a configuração condicional da Spring, que permite que as configurações existam no aplicativo, mas essas configurações são ignoradas antes que certas condições específicas sejam atendidas.
Para implementar a configuração condicional, precisamos usar a anotação condicional @condicional. Em seguida, vamos escrever um pequeno exemplo para experimentar como o @condicional funciona.
1. @Condicional pequeno exemplo
Sabemos que o comando para exibir a lista no Windows é dir, enquanto o comando para exibir a lista no sistema Linux é LS. Com base na configuração condicional, podemos alcançar diferentes valores em diferentes sistemas operacionais.
1. Definição de condições de julgamento
1.) Condições de decisão no Windows
/** * Implemente a interface da condição da Spring e substitua o método Matches () e retorne TRUE se o sistema operacional for Windows * */public class WindowsCondition implementa a condição {@Override public boolean Matches (contexto de condiçãoContext. }}2.) Condições de decisão em Linux
/** * Implemente a interface da condição da primavera e substitua o método Matches () e retorne a verdadeiro se o sistema operacional for linux * */public class LinuxCondition implementa a condição {@Override public boolean Matches (ContextomExtty (ANOTATTATTATTYPEMETADATATATATATA) {Return Context.GetenVer (). }}2. Classes de feijão sob diferentes sistemas
1.) Interface
Public Interface ListService {public String ShowListLine ();}2.) Classe de feijão sob janelas
public class WindowsListService implementos listService {@Override public String ShowListLine () {return "Dir"; }}3.) Classe de feijão sob Linux
public class LinuxListService implementos listService {@Override public String SHOWLISTLINE () {return "LS"; }}3. Classe de configuração
@ConfigurationPublic Class ConditionConfig { / *** Passe a anotação @Conditional e retorne a instância do WindowsListService se atender às condições do Windows** / @Bean @conditional (Windowscondition.class) listService WindonwslistService () {Return New WindowsListsVice (); } / *** Passe a anotação @Conditional e retorne a instância LinuxListService se atender às condições Linux** / @Bean @conditional (linuxcondition.class) listService LinuxListService () {Return linuxListService (); }}4. Classe de teste
public class ConditionTest {public static void main (string [] args) {ANNOTATIONCONFIGAPplicationContext context = new AnoTationConfigApplicationContext (condicionalConfig.class); ListService listService = context.getBean (listService.class); System.out .println (context.getenvironment (). GetProperty ("os.name") + "O comando da lista no sistema é:" + listService.ShowlistLine ()); }}5. Execute a classe de teste, como estou no sistema Windows 7, o resultado é
Os comandos da lista no sistema Windows 7 são: Dir
Se o seu estiver no Linux, o resultado será
Os comandos da lista no sistema Linux são: LS
2. Configuração condicional da bota de mola
No projeto de inicialização da primavera, haverá um pacote JAR chamado Spring-Boot-Autoconfigure
A configuração condicional é implementada nesse frasco. Ele usa as seguintes anotações condicionais, que começam com @condicional:
Em seguida, vejamos uma coluna de código -fonte:
Tome JDBCTemplateAutoconfiguration como exemplo, ele contém este código:
@Bean @Primary @conditionalonMissingBean (jdbcoperations.class) public jdbctemplate jdbctemplate () {return jdbctemplate (this.dataSource); }Um feijão JDBCTemplate será inicializado apenas quando não houver JDBCoperations (se você olhar para o código -fonte do JDBCTemplate, você descobrirá que a classe JDBCTemplate implementa a interface JDBCoperations).
Com base no conteúdo acima, podemos ler o código -fonte relacionado à configuração automática.
Resumir
O exposto acima é a configuração automática do @Conditional e da Spring Boot na Spring Boot introduzida a você pelo editor. Espero que seja útil para você. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a você a tempo. Muito obrigado pelo seu apoio ao site wulin.com!