Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lsmcodes/spring-framework
Resolução dos exercícios apresentados durante o curso "Imersão no Spring Framework com Spring Boot" - DIO
https://github.com/lsmcodes/spring-framework
exercises santander-bootcamp-2024 spring-boot spring-framework spring-jpa
Last synced: about 1 month ago
JSON representation
Resolução dos exercícios apresentados durante o curso "Imersão no Spring Framework com Spring Boot" - DIO
- Host: GitHub
- URL: https://github.com/lsmcodes/spring-framework
- Owner: lsmcodes
- Created: 2024-06-23T03:32:58.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2024-07-08T12:32:18.000Z (7 months ago)
- Last Synced: 2024-11-13T12:11:31.554Z (3 months ago)
- Topics: exercises, santander-bootcamp-2024, spring-boot, spring-framework, spring-jpa
- Language: Java
- Homepage: http://www.dio.me
- Size: 76.2 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# DIO - Trilha Spring Framework
![]()
![]()
![]()
![]()
## Autor dos Exercícios e Repositório Original
- [Gleyson Sampaio](https://github.com/glysns)
- [Spring Boot](https://github.com/digitalinnovationone/dio-springboot/tree/main)## Spring Framework
`Spring` é um framework open source desenvolvido para a plataforma Java que usa `inversão de controle` (IoC) e `injeção de dependências` (DI) para facilitar o desenvolvimento de aplicações.## Exercícios
Este repositório contém exercícios que demonstram a utilização do Spring Framework e que cobrem os seguintes temas:
- Spring Framework
- Spring Boot
- Beans versus Components
- Scopes
- Properties Value e Configuration Properties
- ORM e JPA
- Spring Data JPA
- Conexão com Banco de Dados
- JPA Repository## Módulos
A arquitetura do Spring Framework consiste em funcionalidades organizadas em quase 20 `módulos`. Esses módulos são agrupados em Core Container, Data Access/Integration, Web, AOP (Aspect Oriented Programming), Instrumentation, e Test, como demonstrado no diagrama a seguir.
![]()
## Inversão de Controle (IoC)
`Inversão de controle` é o princípio de transferir o controle de objetos ou porções de um programa para um framework ou container. No Spring Framework, esse princípio é implementado por meio da interface `ApplicationContext` e dos `beans`.- `ApplicationContext`: é a interface que representa o container de inversão de controle no Spring. É capaz de instanciar, configurar, montar e gerenciar o ciclo de vida de qualquer tipo de objeto;
- `Beans`: são os objetos gerenciados por um container de inversão de controle como o próprio ApplicationContext ou uma de suas implementações como a WebApplicationContext.## Injeção de Dependência (DI)
`Injeção de dependência` é uma forma especializada de inversão de controle através da qual objetos definem suas dependências apenas por argumentos de construtor, argumentos passados a um factory method ou propriedades definidas na instância de um objeto antes que ela seja construída ou retornada de um factory method. O container então busca as dependências (anotadas com `@Bean` ou `@Component`) correspondentes a essas definições e as injeta nelas automaticamente por meio da anotação `@Autowired`.### Sem Inversão de Controle
Sem inversão de controle, os objetos são gerenciados manualmente:```java
Calculadora calculadora = new Calculadora();
```### Com Inversão de Controle
Com inversão de controle, os objetos são gerenciados pelo container, logo, o operador `new` não é utilizado:```java
@Autowired
Calculadora calculadora;
```## Bean Scopes
Quando um `bean` é definido, é como se fosse uma receita para a criação de instâncias reais da classe definida. Nessa definição, é possível controlar não apenas as dependências e os valores de configuração que devem ser conectados aos objetos criados a partir dela, mas também controlar o escopo desses objetos. O Spring Framework suporta seis escopos:| Escopo | Descrição |
|---------------|----------------------------------------------------------------------------------------------------------------------------------------------------|
| `singleton` | (Padrão) Apenas uma única instância do bean é criada e todas as requisições pelo bean retornam a mesma instância |
| `prototype` | Uma nova instância do bean é criada a cada requisição pelo bean |
| `request` | Uma única instância do bean é criada para o ciclo de vida de uma requisição HTTP (válido apenas em contextos WebApplicationContext cientes da web) |
| `session` | Uma única instância do bean é criada para o ciclo de vida de uma sessão HTTP (válido apenas em contextos WebApplicationContext cientes da web) |
| `application` | Uma única instância do bean é criada para o ciclo de vida de um ServletContext (válido apenas em contextos WebApplicationContext cientes da web) |
| `websocket` | Uma única instância do bean é criada para o ciclo de um WebSocket (válido apenas em contextos WebApplicationContext cientes da web) |## Referências
- Introduction to Spring Framework - https://docs.spring.io/spring-framework/docs/4.0.x/spring-framework-reference/html/overview.html
- Como Começar com o Spring - https://www.devmedia.com.br/exemplo/como-comecar-com-spring/73
- Introduction to the Spring IoC Container and Beans - https://docs.spring.io/spring-framework/reference/core/beans/introduction.html
- Intro to Inversion of Control and Dependency Injection with Spring - https://www.baeldung.com/inversion-control-and-dependency-injection-in-spring
- Bean Scopes - https://docs.spring.io/spring-framework/reference/core/beans/factory-scopes.html
- Quick Guide to Spring Bean Scopes - https://www.baeldung.com/spring-bean-scopes