Propósito da primavera: resolver as complexidades do desenvolvimento de aplicativos corporativos
Prós: Spring é uma estrutura de contêiner leve de Inversão de Controle (ioc) e Orientada a Aspectos (AOP)
spring é um framework livre de código aberto (contêiner)
spring é um framework leve e não intrusivo
Suporte para processamento de transações, suporte para integração de framework
Escopo: Qualquer aplicativo Java
O desenvolvimento java moderno é baseado no desenvolvimento Spring
SpringBoot: Um andaime para desenvolvimento rápido. Um único microsserviço pode ser desenvolvido rapidamente com base no SpringBoot. A convenção é maior que a configuração.
SpringCloud: SpringCloud é implementado com base no SpringBoot.
A maioria das empresas está usando SpringBoot para desenvolvimento rápido. A premissa de aprender SpringBoot é dominar totalmente Spring e SpringMVC
Desvantagens: Foi desenvolvido por muito tempo e a configuração é muito complicada
Derivação teórica do IOC:
Requisito: obter banco de dados mysql
private UserDao userDao=novo UserDaoMysqlmpl();
Requisito: Obter o banco de dados orcle
private UserDao userDao=novo UserDaoMysqlmpl();
Toda vez que você obtém dados diferentes, você precisa criar uma classe de implementação diferente em new e alterar o código manualmente. O programa não pode se adaptar a mudanças nos requisitos.
Solução: use set para implementar dinamicamente a injeção de valor (foram enviadas alterações revolucionárias)
No negócio anterior, as necessidades do usuário podem afetar o código original, e o código original precisa ser modificado de acordo com as necessidades do usuário.
Se a quantidade de código for grande, uma modificação é cara. Antes, os programas criavam objetos ativamente, e o controle estava nas mãos do programador. Depois de usar a injeção de conjunto, o programa não tem mais a iniciativa, mas se torna um objeto receptor passivo.
Essa é a ideia de Inversão de Controle.
Esse tipo de pensamento resolve o problema em essência, sem a necessidade de programadores gerenciarem a criação de objetos. O acoplamento do sistema é bastante reduzido e você pode se concentrar mais na implementação do negócio.
Este é o protótipo do COI.
A iniciativa é passada da camada de negócios para o usuário
IOC Inversion of Control (Inversion of Control) é uma ideia de projeto, e DI (Dependency Injection) é uma forma de implementar IOC.
Em programas sem IOC, usamos programação orientada a objetos. As dependências entre objetos criados e objetos são completamente codificadas no programa. A criação de objetos é controlada pelo próprio programa. Após o controle ser revertido, a criação de objetos é transferida a um terceiro.
A inversão de controle é a inversão da maneira de obter objetos dependentes
IOC é o conteúdo central do framework Spring, podendo ser configurado usando XML ou anotações.A nova versão do Spring também pode implementar IOC com configuração zero.
Quando o contêiner Spring é inicializado, ele primeiro lê o arquivo de configuração, armazena o objeto no contêiner de acordo com o arquivo de configuração ou metadados e organiza o objeto e, em seguida, retira o objeto necessário do contêiner IOC quando o programa é usado.
Ao configurar Beans em XML, as informações de definição e implementação de Beans são separadas e as anotações podem ser usadas para integrar os dois. As informações de definição do bean são definidas diretamente na classe de implementação na forma de anotações, atingindo assim o objetivo de configuração zero.
A inversão de controle é uma forma de obter um objeto específico por descrição (XML ou anotação) e por terceiros. É o container IOC que implementa a inversão de controle no Spring, e seu método de implementação é Dependency Injection (DI)
Download do site oficial da primavera
maven importa as dependências do spring web mvc:
https://mvnrepository.com/artifact/org.springframework/spring-webmvc/5.3.19
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.19</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.3.19</version>
</dependency>